]> git.ozlabs.org Git - ppp.git/blobdiff - modules/ppp.c
add these examples
[ppp.git] / modules / ppp.c
index 5e47a62b200776dd0d2baf959751a0ba2d7b2f81..b3a32a39d3b0a75c586f1e0f5d4a474e983cc296 100644 (file)
@@ -24,7 +24,7 @@
  * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
  * OR MODIFICATIONS.
  *
- * $Id: ppp.c,v 1.18 1999/03/22 05:55:59 paulus Exp $
+ * $Id: ppp.c,v 1.20 1999/09/08 01:11:15 masputra Exp $
  */
 
 /*
@@ -809,7 +809,7 @@ pppuwput(q, mp)
            if (n == PPPDBG_DUMP + PPPDBG_DRIVER) {
                qwriter(q, NULL, debug_dump, PERIM_OUTER);
                iop->ioc_count = 0;
-               error = 0;
+               error = -1;
            } else if (n == PPPDBG_LOG + PPPDBG_DRIVER) {
                DPRINT1("ppp/%d: debug log enabled\n", us->mn);
                us->flags |= US_DBGLOG;
@@ -1098,7 +1098,7 @@ dlpi_request(q, mp, us)
        }
        us->ppa = ppa;
        qwriter(q, mp, attach_ppa, PERIM_OUTER);
-       break;
+       return;
 
     case DL_DETACH_REQ:
        if (size < sizeof(dl_detach_req_t))
@@ -1108,7 +1108,7 @@ dlpi_request(q, mp, us)
            break;
        }
        qwriter(q, mp, detach_ppa, PERIM_OUTER);
-       break;
+       return;
 
     case DL_BIND_REQ:
        if (size < sizeof(dl_bind_req_t))
@@ -1129,6 +1129,18 @@ dlpi_request(q, mp, us)
           except that we accept ETHERTYPE_IP in place of PPP_IP. */
        sap = d->bind_req.dl_sap;
        us->req_sap = sap;
+
+#ifdef SOL2
+        /* 
+        * ip will send a sap value of 0 (post-Solaris 7), or
+        * ETHERTYPE_IP (0x800) (pre-Solaris 8) due to how the
+        * ppp DLPI provider declares its characteristics.
+        * <adi.masputra@sun.com>
+        */
+       if (sap == 0)
+            sap = ETHERTYPE_IP;
+#endif /* SOL2 */
+
        if (sap == ETHERTYPE_IP)
            sap = PPP_IP;
        if (sap < 0x21 || sap > 0x3fff || (sap & 0x101) != 1) {
@@ -2092,8 +2104,8 @@ putctl4(q, type, code, val)
 
 static void
 debug_dump(q, mp)
-    queue_t *q;                        /* not used */
-    mblk_t *mp;                        /* not used either */
+    queue_t *q;
+    mblk_t *mp;
 {
     upperstr_t *us;
     queue_t *uq, *lq;
@@ -2119,6 +2131,8 @@ debug_dump(q, mp)
                    (lq? qsize(lq): 0), us->mru, us->mtu);
        }
     }
+    mp->b_datap->db_type = M_IOCACK;
+    qreply(q, mp);
 }
 
 #ifdef FILTER_PACKETS