[1487] in linux-announce channel archive

home help back first fref pref prev next nref lref last post

Re: Full featured Win95 dialup to Linux

daemon@ATHENA.MIT.EDU (Lars Wirzenius)
Sat Jan 13 17:32:26 1996

Date: 	Tue, 9 Jan 1996 22:28:51 +0200
From: Lars Wirzenius <wirzeniu@cc.helsinki.fi>
To: linux-announce@vger.rutgers.edu

From: terryt@ren.pc.athabascau.ca (Terry Tanski)
Subject: Re: Full featured Win95 dialup to Linux
Organization: Athabasca University
References: <cola-liw-821042212-7996-1@oravannahka.helsinki.fi>
Reply-To: terryt@cs.athabascau.ca
Approved: linux-announce@news.ornl.gov (Lars Wirzenius)
Newsgroups: comp.os.linux.announce
Followup-to: comp.os.linux.networking

-----BEGIN PGP SIGNED MESSAGE-----

Christoph Lameter (clameter@fuller.edu) wrote:

> Short Guide on How to run a Win95 Connection with PPPD
> - ------------------------------------------------------

[stuff deleted]

Hi,

For additional functionality, apply the following patch to
pppd-2.2.0d which will add the ability to autoconfigure WINS server
addresses.

Christoph's 3A instruction should then include:

Add a line
	wins-addr x.x.x.x
to your /etc/ppp/options file. Be sure to replace x.x.x.x with a
valid WINS server address.

P.S. The wins patch was posted to comp.protocols.smb 
     by John Paul Morrison, jmorriso@ConcordPacific.com

- ---Cut here---
diff -ur ppp-2.2.0d.old/pppd/Makefile.linux ppp-2.2.0d/pppd/Makefile.linux
- --- ppp-2.2.0d.old/pppd/Makefile.linux	Wed Dec 13 20:18:18 1995
+++ ppp-2.2.0d/pppd/Makefile.linux	Sun Dec 24 16:53:23 1995
@@ -23,9 +23,10 @@
 # CC = gcc
 # DEBUG_FLAGS = -DDEBUGALL
 COMPILE_FLAGS = -D_linux_=1 -DHAVE_PATHS_H
- -COPTS = -g # -O2
+COPTS = -O2
 VER = 0.2.8
 LIBS = -lbsd
+USE_MS_DNS = 1
 
 CFLAGS= $(COPTS) $(DEBUG_FLAGS) $(COMPILE_FLAGS)
 SOURCE= RELNOTES Makefile.linux $(PPPDSRCS) $(HEADERS) $(MANPAGES)
diff -ur ppp-2.2.0d.old/pppd/ipcp.c ppp-2.2.0d/pppd/ipcp.c
- --- ppp-2.2.0d.old/pppd/ipcp.c	Thu Nov 23 16:00:37 1995
+++ ppp-2.2.0d/pppd/ipcp.c	Tue Dec 26 02:50:32 1995
@@ -137,6 +137,8 @@
 #ifdef USE_MS_DNS
     wo->dnsaddr[0] =
     wo->dnsaddr[1] = 0;
+    wo->winsaddr[0] =
+    wo->winsaddr[1] = 0;
 #endif
 
     wo->neg_vj = 1;
@@ -888,6 +890,24 @@
             }
             break;
 
+	case CI_MS_WINS1:
+	    IPCPDEBUG((LOG_INFO, "ipcp: received WINS Request "));
+
+	    /* If we do not have a WINS address then we cannot send it */
+	    if (wo->winsaddr[0] == 0 ||
+		cilen != CILEN_ADDR) {	/* Check CI length */
+		orc = CONFREJ;		/* Reject CI */
+		break;
+	    }
+	    GETLONG(tl,p);
+	    if (htonl(tl) != wo->winsaddr[0]) {
+                DECPTR(sizeof (long),p);
+		tl = ntohl(wo->winsaddr[0]);
+		PUTLONG(tl, p);
+		orc = CONFNAK;
+            }
+            break;
+
 	case CI_MS_DNS2:
 	    IPCPDEBUG((LOG_INFO, "ipcp: received DNS Request "));
 
@@ -901,6 +921,24 @@
 	    if (htonl(tl) != wo->dnsaddr[1]) { /* and this is the 2nd one */
                 DECPTR(sizeof (long),p);
 		tl = ntohl(wo->dnsaddr[1]);
+		PUTLONG(tl, p);
+		orc = CONFNAK;
+            }
+            break;
+
+	case CI_MS_WINS2:
+	    IPCPDEBUG((LOG_INFO, "ipcp: received WINS Request "));
+
+	    /* If we do not have a WINS address then we cannot send it */
+	    if (wo->winsaddr[0] == 0 ||  /* Yes, this is the first one! */
+		cilen != CILEN_ADDR) {	/* Check CI length */
+		orc = CONFREJ;		/* Reject CI */
+		break;
+	    }
+	    GETLONG(tl,p);
+	    if (htonl(tl) != wo->winsaddr[1]) { /* and this is the 2nd one */
+                DECPTR(sizeof (long),p);
+		tl = ntohl(wo->winsaddr[1]);
 		PUTLONG(tl, p);
 		orc = CONFNAK;
             }
diff -ur ppp-2.2.0d.old/pppd/ipcp.h ppp-2.2.0d/pppd/ipcp.h
- --- ppp-2.2.0d.old/pppd/ipcp.h	Thu Nov 23 16:01:55 1995
+++ ppp-2.2.0d/pppd/ipcp.h	Tue Dec 26 02:35:44 1995
@@ -27,7 +27,9 @@
 #define	CI_ADDR		3
 
 #define CI_MS_DNS1	129	/* Primary DNS value */
+#define CI_MS_WINS1	130	/* Primary WINS value */
 #define CI_MS_DNS2	131	/* Secondary DNS value */
+#define CI_MS_WINS2	132	/* Secondary WINS value */
 
 #define MAX_STATES 16		/* from slcompress.h */
 
@@ -55,6 +57,7 @@
     u_int32_t ouraddr, hisaddr;	/* Addresses in NETWORK BYTE ORDER */
 #ifdef USE_MS_DNS
     u_int32_t dnsaddr[2];	/* Primary and secondary DNS entries */
+    u_int32_t winsaddr[2];	/* Primary and secondary WINS entries */
 #endif
 } ipcp_options;
 
diff -ur ppp-2.2.0d.old/pppd/options.c ppp-2.2.0d/pppd/options.c
- --- ppp-2.2.0d.old/pppd/options.c	Thu Nov 23 16:00:35 1995
+++ ppp-2.2.0d/pppd/options.c	Tue Dec 26 02:52:48 1995
@@ -201,6 +201,7 @@
 
 #ifdef USE_MS_DNS
 static int setdnsaddr __P((char **));
+static int setwinsaddr __P((char **));
 #endif
 
 static int number_option __P((char *, u_int32_t *, int));
@@ -318,6 +319,7 @@
 
 #ifdef USE_MS_DNS
     {"dns-addr", 1, setdnsaddr}, /* DNS address(es) for the peer's use */
+    {"wins-addr", 1, setwinsaddr}, /* WINS address(es) for the peer's use */
 #endif
 
     {NULL, 0, NULL}
@@ -2036,4 +2038,32 @@
 
     return (1);
   }
+
+/*
+ * setwinsaddr - set the wins address(es)
+ */
+
+static int
+setwinsaddr(argv)
+    char **argv;
+{
+    u_long wins;
+
+    wins = inet_addr(*argv);
+    if (wins == -1) {
+	fprintf(stderr, "Invalid WINS Address %s\n", *argv);
+	return 0;
+    }
+
+    if (ipcp_wantoptions[0].winsaddr[0] == 0) {
+	ipcp_wantoptions[0].winsaddr[0]  = wins;
+	ipcp_allowoptions[0].winsaddr[0] = wins;
+    } else {
+	ipcp_wantoptions[0].winsaddr[1]  = wins;
+	ipcp_allowoptions[0].winsaddr[1] = wins;
+    }
+
+    return (1);
+  }
+
 #endif /* USE_MS_DNS */
diff -ur ppp-2.2.0d.old/pppd/sys-linux.c ppp-2.2.0d/pppd/sys-linux.c
- --- ppp-2.2.0d.old/pppd/sys-linux.c	Wed Nov 22 05:51:41 1995
+++ ppp-2.2.0d/pppd/sys-linux.c	Tue Dec 26 13:38:13 1995
@@ -1661,7 +1661,7 @@
  * This code is derived from chat.c.
  */
 
- -#define LOCK_PREFIX	"/var/lock/LCK.."
+#define LOCK_PREFIX	"/var/spool/uucp/LCK.."
 
 /*
  * lock - create a lock file for the named device
@@ -1695,8 +1695,13 @@
 	fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR, 0644);
 	if (fd >= 0)
 	  {
+#ifdef PIDSTRING
 	    sprintf(hdb_lock_buffer, "%010d\n", getpid());
 	    write(fd, hdb_lock_buffer, 11);
+#else
+            pid = getpid();
+            write(fd, &pid, sizeof(pid));
+#endif
 	    close(fd);
 	    return 0;
 	  }
@@ -1716,7 +1721,11 @@
 	      }
 
 	    /* Read the lock file to find out who has the device locked */
+#ifdef PIDSTRING
 	    n = read (fd, hdb_lock_buffer, 11);
+#else
+	    n = read (fd, &pid, sizeof(pid));
+#endif             
 	    close (fd);
 	    if (n < 0)
 	      {
@@ -1727,8 +1736,10 @@
 	    /* See the process still exists. */
 	    if (n > 0)
 	      {
+#ifdef PIDSTRING
 		hdb_lock_buffer[n] = '\0';
 		sscanf (hdb_lock_buffer, " %d", &pid);
+#endif
 		if (kill(pid, 0) == -1 && errno == ESRCH)
 		  {
 		    n = 0;

Terry

- --
      *********    Terry Tanski, B.Sc.
     **********
    .      ****    Computing Services       Phone: (403) 675-6339
   ..      ****    Athabasca University       FAX: (403) 675-6333
  ....     ****    Box 10,000               Email: terryt@cs.athabascau.ca
 ..........****    Athabasca, AB  CANADA      Web: http://www.athabascau.ca


-----BEGIN PGP SIGNATURE-----
Version: 2.6.2i

iQCVAwUBMPLFYoQRll5MupLRAQHSnQP6Ayd1YLR/ieKoVU2FeOVFZ/MvaPdXRThL
fqvD+W/mzV2AGUvaqBNy76R3EeccoseRp7c6E2aWaJlVBQv4pjDfj9KV4H0An8GZ
zdcnMZSkkxWMzoIx1gb1M2K7l2fFq8FSD1qaSK25XCb8raTzrVTbsKqCQ6Z3OsIl
ZWb39+5pXkA=
=wFch
-----END PGP SIGNATURE-----

-- 
This article has been digitally signed by the moderator, using PGP.
Finger wirzeniu@kruuna.helsinki.fi for PGP key needed for validating signature.
Send submissions for comp.os.linux.announce to: linux-announce@news.ornl.gov
PLEASE remember a short description of the software and the LOCATION.



home help back first fref pref prev next nref lref last post