components/net-snmp/patches/024.7119673,7127371.kernel_sunos5.patch
author Tomas Klacko <tomas.klacko@oracle.com>
Fri, 02 May 2014 12:23:29 +0200
branchs11u1-sru
changeset 3109 1940d0927363
parent 812 c7c0d2c379c0
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:
812
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     1
--- net-snmp-5.4.1/agent/mibgroup/kernel_sunos5.c	Tue Apr 24 14:13:10 2012
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     2
+++ kernel_sunos5.c.latest	Tue Apr 24 14:11:58 2012
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     3
@@ -1045,18 +1045,21 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     4
 static int
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     5
 _dlpi_open(const char *devname)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     6
 {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     7
-    char *devstr;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     8
+    char devstr[255], devstrcpy[255];
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
     9
     int fd = -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    10
     int ppa = -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    11
+    int ret = -1; 	
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    12
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    13
     DEBUGMSGTL(("kernel_sunos5", "_dlpi_open called\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    14
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    15
     if (devname == NULL)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    16
-        return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    17
+	return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    18
+    
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    19
+    ret = snprintf(devstr, sizeof(devstr), "/dev/%s", devname);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    20
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    21
-    if ((devstr = malloc(5 + strlen(devname) + 1)) == NULL)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    22
-        return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    23
-    (void) sprintf(devstr, "/dev/%s", devname);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    24
+    if(ret < 0 || ret > sizeof(devstr) - 1)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    25
+	return -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    26
+    
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    27
     DEBUGMSGTL(("kernel_sunos5:dlpi", "devstr(%s)\n", devstr));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    28
     /*
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    29
      * First try opening the device using style 1, if the device does not
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    30
@@ -1067,13 +1070,49 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    31
     DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open(%s)\n", devstr));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    32
     if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) < 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    33
         DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open failed\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    34
-        if (_dlpi_parse_devname(devstr, &ppa) == 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    35
-            DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 parse: %s, %d\n", 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    36
-                       devstr, ppa));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    37
-            /* try style 2 */
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    38
-            DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open(%s)\n", devstr));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    39
+	fd = -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    40
+    } else {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    41
+      DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open succeeded\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    42
+    }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    43
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    44
-            if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    45
+    /* Creating a copy of the devname incase style 3 open
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    46
+     *  is required
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    47
+     */
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    48
+    ret = strlcpy(devstrcpy, devstr, sizeof(devstrcpy));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    49
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    50
+    if(ret > sizeof(devstrcpy) - 1)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    51
+        return -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    52
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    53
+    DEBUGMSGTL(("kernel_sunos5:dlpi", "devstrcpy(%s)\n", devstrcpy));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    54
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    55
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    56
+    if (fd == -1 ) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    57
+      ret = snprintf(devstr, sizeof(devstr), "/dev/net/%s", devname);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    58
+      
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    59
+      if(ret < 0 || ret > sizeof(devstr) - 1)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    60
+          return -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    61
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    62
+      DEBUGMSGTL(("kernel_sunos5:dlpi", "devstr(%s)\n", devstr));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    63
+      
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    64
+      /* try style 2 */
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    65
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    66
+     if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) < 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    67
+        DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open failed\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    68
+	fd = -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    69
+      } else {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    70
+	DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open succeeded\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    71
+      }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    72
+    }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    73
+    
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    74
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    75
+    if (fd == -1 ) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    76
+        if (_dlpi_parse_devname(devstrcpy, &ppa) == 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    77
+            DEBUGMSGTL(("kernel_sunos5:dlpi", "style3 parse: %s, %d\n", 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    78
+                       devstrcpy, ppa));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    79
+            /* try style 3 */
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    80
+            DEBUGMSGTL(("kernel_sunos5:dlpi", "style3 open(%s)\n", devstrcpy));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    81
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    82
+            if ((fd = open(devstrcpy, O_RDWR | O_NONBLOCK)) != -1) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    83
                 if (_dlpi_attach(fd, ppa) == 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    84
                     DEBUGMSGTL(("kernel_sunos5:dlpi", "attached\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    85
                 } else {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    86
@@ -1082,16 +1121,11 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    87
                     fd = -1;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    88
                 }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    89
             } else {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    90
-                DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open failed\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    91
+                DEBUGMSGTL(("kernel_sunos5:dlpi", "style3 open failed\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    92
             }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    93
         } 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    94
-    } else {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    95
-        DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open succeeded\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    96
     }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    97
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    98
-    /* clean up */
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
    99
-    free(devstr);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   100
-
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   101
     return (fd);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   102
 }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   103
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   104
@@ -1106,7 +1140,9 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   105
     struct strbuf       ctlbuf;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   106
     char                buf[MAX(DL_PHYS_ADDR_ACK_SIZE+64, DL_ERROR_ACK_SIZE)];
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   107
     int                 flag = 0;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   108
-
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   109
+    struct pollfd 		pfd;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   110
+    int			timeout = 100;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   111
+	
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   112
     DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_phys_address\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   113
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   114
     paddr_req.dl_primitive = DL_PHYS_ADDR_REQ;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   115
@@ -1119,7 +1155,22 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   116
     ctlbuf.maxlen = sizeof(buf);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   117
     ctlbuf.len = 0;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   118
     ctlbuf.buf = buf;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   119
-    if (getmsg(fd, &ctlbuf, NULL, &flag) < 0)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   120
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   121
+    pfd.fd = fd;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   122
+    pfd.events = POLLIN | POLLPRI;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   123
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   124
+    switch (poll(&pfd, 1, timeout)) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   125
+    default:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   126
+	if (pfd.revents & POLLHUP)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   127
+    	    return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   128
+   	break;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   129
+    case 0:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   130
+    	return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   131
+    case -1:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   132
+    	return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   133
+    }
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   134
+    
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   135
+	if (getmsg(fd, &ctlbuf, NULL, &flag) < 0)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   136
         return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   137
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   138
     if (ctlbuf.len < sizeof(uint32_t))
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   139
@@ -1161,6 +1212,8 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   140
     struct strbuf       ctlbuf;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   141
     char                buf[MAX(DL_INFO_ACK_SIZE, DL_ERROR_ACK_SIZE)];
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   142
     int                 flag = 0;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   143
+    struct pollfd       pfd;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   144
+    int                 timeout = 100;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   145
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   146
     DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_iftype\n"));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   147
 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   148
@@ -1175,7 +1228,22 @@
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   149
     ctlbuf.maxlen = sizeof(buf);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   150
     ctlbuf.len = 0;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   151
     ctlbuf.buf = buf;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   152
-    if (getmsg(fd, &ctlbuf, NULL, &flag) < 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   153
+   
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   154
+    pfd.fd = fd;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   155
+    pfd.events = POLLIN | POLLPRI;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   156
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   157
+    switch (poll(&pfd, 1, timeout)) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   158
+    default:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   159
+        if (pfd.revents & POLLHUP)
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   160
+            return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   161
+        break;
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   162
+    case 0:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   163
+        return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   164
+    case -1:
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   165
+        return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   166
+    } 
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   167
+
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   168
+	if (getmsg(fd, &ctlbuf, NULL, &flag) < 0) {
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   169
         DEBUGMSGTL(("kernel_sunos5:dlpi", "getmsg failed: %d\n", errno));
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   170
         return (-1);
c7c0d2c379c0 7119673 can't get "IF-MIB::ifPhysAddress" value on solaris11
lijo george - Sun Microsystems - Bangalore India <lijo.x.george@oracle.com>
parents:
diff changeset
   171
     }