Subject: pkg/26842: pptp-package is extremely outdated
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <stsp@binarchy.net>
List: pkgsrc-bugs
Date: 05/05/2005 20:02:01
The following reply was made to PR pkg/26842; it has been noted by GNATS.

From: stsp@binarchy.net
To: gnats-bugs@netbsd.org
Cc: 
Subject: pkg/26842: pptp-package is extremely outdated
Date: Thu,  5 May 2005 21:57:14 +0200 (CEST)

 >Submitter-Id:	net
 >Originator:	
 >Organization:
 	
 >Confidential:	no
 >Synopsis:	pptp-package is extremely outdated
 >Severity:	non-critical
 >Priority:	medium
 >Category:	pkg
 >Class:		change-request
 >Release:	NetBSD 2.0.2
 	
 	
 >Environment:
 	
 	
 System: NetBSD stud 2.0.2 NetBSD 2.0.2 (STUD) #0: Sun May 1 13:31:56 CEST 2005 root@:/usr/src/sys/arch/i386/compile/STUD i386
 Architecture: i386
 Machine: i386
 >Description:
 	net/pptp's version is 1.0.2 while they already released 1.6.0.
 >How-To-Repeat:
 	
 >Fix:
 
 This is a patch against the current pptp package in pkgsrc.
 (It's actually based on a 2005Q1 checkout but that shouldn't matter).
 The patches to the package were all totally outdated.
 I tried to merge most of them but did not see much sense in adding
 log messages all over the code (see patch-ac for example), so I did
 not bother figuring out where these should go today. The pptp code
 has changed a lot and now has in-house support for NetBSD anyway.
 
 diff -urN pptp.orig/Makefile pptp/Makefile
 --- pptp.orig/Makefile	2003-07-18 00:51:40.000000000 +0200
 +++ pptp/Makefile	2005-05-05 21:50:30.000000000 +0200
 @@ -1,15 +1,16 @@
  # $NetBSD: Makefile,v 1.6 2003/07/17 22:51:40 grant Exp $
  
 -DISTNAME=	pptp-linux-1.0.2
 -PKGNAME=	pptp-1.0.2
 +DISTNAME=	pptp-1.6.0
 +PKGNAME=	pptp-1.6.0
  CATEGORIES=	net
 -MASTER_SITES= 	http://www.pdos.lcs.mit.edu/~cananian/Synaptics/release/
 +#MASTER_SITES= 	http://www.pdos.lcs.mit.edu/~cananian/Synaptics/release/
 +MASTER_SITES= 	${MASTER_SITE_SOURCEFORGE:=pptpclient/}
  
  MAINTAINER=	tech-pkg@NetBSD.org
 -HOMEPAGE=	http://www.pdos.lcs.mit.edu/~cananian/Projects/PPTP/
 +HOMEPAGE=	http://pptpclient.sourceforge.net
  COMMENT=	PPTP client package for Microsoft VPN servers (no encryption yet)
  
 -#LICENSE=	GPL
 +LICENSE=	GPL
  
  .include "../../mk/bsd.prefs.mk"
  
 diff -urN pptp.orig/distinfo pptp/distinfo
 --- pptp.orig/distinfo	2005-02-24 13:14:01.000000000 +0100
 +++ pptp/distinfo	2005-05-05 21:40:18.000000000 +0200
 @@ -1,12 +1,7 @@
  $NetBSD: distinfo,v 1.3 2005/02/24 12:14:01 agc Exp $
  
 -SHA1 (pptp-linux-1.0.2.tar.gz) = fe7c7ea298483de37052d57f2641977753817fcf
 -RMD160 (pptp-linux-1.0.2.tar.gz) = d82bb10a9ca78848bd9c44cad451aead31ee11b5
 -Size (pptp-linux-1.0.2.tar.gz) = 193299 bytes
 -SHA1 (patch-aa) = 66724c2083970fdcced1cf81bbb9e3a70daf8b5d
 -SHA1 (patch-ab) = b6fa33037515042f13057f2593e3a073f694f932
 -SHA1 (patch-ac) = 71685d2992349a2b6796fc08fd598b8bf5b60226
 -SHA1 (patch-ad) = 22da1feec4d0d80e760839e15d97e89bfee6216f
 -SHA1 (patch-ae) = 82b15dce081e938351876e86866eea308829c7d0
 -SHA1 (patch-af) = 56b7f7eece4b9b92de6a113886ae80c27c30b5e6
 -SHA1 (patch-ag) = c272983a86ba4fbaf96baed678cb10cd95c1ac0e
 +SHA1 (pptp-1.6.0.tar.gz) = 9cb49142e400b889129a34ee3c88397e2881e4ac
 +RMD160 (pptp-1.6.0.tar.gz) = ee4eda12fc578709fd0862eebaaea98ce2b913ba
 +Size (pptp-1.6.0.tar.gz) = 225956 bytes
 +SHA1 (patch-aa) = a36c7386f743397d1ae9615b329ffe5e45affbaf
 +SHA1 (patch-ab) = d625328ee1e774fa76eaed7b606b9dffbb86ebb5
 diff -urN pptp.orig/patches/patch-aa pptp/patches/patch-aa
 --- pptp.orig/patches/patch-aa	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-aa	2005-05-05 21:38:00.000000000 +0200
 @@ -1,51 +1,42 @@
 -$NetBSD: patch-aa,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: Makefile
 ---- Makefile.orig	Wed Feb 18 17:42:14 1998
 -+++ Makefile	Sun Apr  9 21:07:17 2000
 -@@ -1,10 +1,11 @@
 --VERSION = 1.0.2
 --VERSION_DEFINE = '-DPPTP_LINUX_VERSION="${VERSION}"'
 -+VERSION = 1.0.2+NetBSD
 -+VERSION_DEFINE = '-DPPTP_LINUX_VERSION="${VERSION}"' -DPROGRAM_NAME='"pptp"'
 - 
 - CC	= gcc -Wall
 --DEBUG	= -g
 -+RM	= rm
 -+DEBUG	= -g -O2 # -O9
 +--- Makefile.orig	2005-05-05 21:14:03.000000000 +0200
 ++++ Makefile	2005-05-05 21:21:20.000000000 +0200
 +@@ -1,5 +1,5 @@
 + # $Id: Makefile,v 1.37 2005/02/18 01:40:23 quozl Exp $
 +-VERSION=1.6.0
 ++VERSION=1.6.0+NetBSD
 + RELEASE=
 + 
 + #################################################################
 +@@ -13,7 +13,7 @@
 + 
 + CC	= gcc
 + RM	= rm -f
 +-OPTIMIZE= -O0
 ++OPTIMIZE= -O2
 + DEBUG	= -g
   INCLUDE =
 --CFLAGS  = -O9 $(VERSION_DEFINE) $(DEBUG) $(INCLUDE)
 -+CFLAGS  =  $(VERSION_DEFINE) $(DEBUG) $(INCLUDE)
 - LIBS	=
 - LDFLAGS	=
 - 
 -@@ -24,7 +25,19 @@
 - CALLMGR_OBJS = pptp_callmgr.o pptp_ctrl.o dirutil.o util.o vector.o version.o
 - CALLMGR_DEPS = pptp_callmgr.h pptp_ctrl.h dirutil.h pptp_msg.h vector.h
 - 
 --all: $(PPTP_BIN) $(CALLMGR_BIN)
 -+MANPAGE=pptp.8
 -+
 -+all: $(PPTP_BIN) $(MANPAGE)
 -+
 -+install:
 -+	$(INSTALL) -c $(PPTP_BIN) ${PREFIX}/sbin/${PPTP_BIN}
 -+	$(INSTALL) -c -m 444 $(MANPAGE) ${PREFIX}/man/man8/$(MANPAGE)
 -+	mkdir -p ${PREFIX}/share/doc/pptp
 -+	$(INSTALL) -c -m 444 USING ${PREFIX}/share/doc/pptp/USING
 -+	$(INSTALL) -c -m 444 README ${PREFIX}/share/doc/pptp/README
 -+	$(INSTALL) -c -m 444 INSTALL ${PREFIX}/share/doc/pptp/INSTALL
 -+	$(INSTALL) -c -m 444 NEWS ${PREFIX}/share/doc/pptp/NEWS
 -+	tar cf - Reference Documentation |(cd ${PREFIX}/share/doc/pptp && tar xpBf -)
 - 
 - $(PPTP_BIN): $(PPTP_OBJS) $(PPTP_DEPS)
 - 	$(CC) -o $(PPTP_BIN) $(PPTP_OBJS) $(LDFLAGS) $(LIBS)
 -@@ -36,7 +49,7 @@
 - 	$(CC) -o vector_test vector_test.o vector.o
 - 
 - clean:
 --	$(RM) *.o *~
 -+	$(RM) -f *.o *~
 + CFLAGS  = -Wall $(OPTIMIZE) $(DEBUG) $(INCLUDE)
 +@@ -54,12 +54,17 @@
 + test: vector_test
 + 
 + install:
 +-	mkdir -p $(BINDIR)
 +-	install -o root -m 555 pptp $(BINDIR)
 +-	mkdir -p $(MANDIR)
 +-	install -m 644 pptp.8 $(MANDIR)
 +-	mkdir -p $(PPPDIR)
 +-	install -m 644 options.pptp $(PPPDIR)
 ++	$(INSTALL) -c $(PPTP_BIN) ${DESTDIR}/sbin/${PPTP_BIN}
 ++	$(INSTALL) -c -m 444 $(MANPAGE) ${DESTDIR}/man/man8/$(MANPAGE)
 ++	mkdir -p ${DESTDIR}/share/doc/pptp
 ++	$(INSTALL) -c -m 444 USING ${DESTDIR}/share/doc/pptp/USING
 ++	$(INSTALL) -c -m 444 README ${DESTDIR}/share/doc/pptp/README
 ++	$(INSTALL) -c -m 444 INSTALL ${DESTDIR}/share/doc/pptp/INSTALL
 ++	$(INSTALL) -c -m 444 NEWS ${DESTDIR}/share/doc/pptp/NEWS
 ++	tar cf - Reference Documentation |(cd ${DESTDIR}/share/doc/pptp && tar xpBf -)
 ++	@# FIXME: do we need this?
 ++	@#mkdir -p $(PPPDIR)
 ++	@#$(INSTALL) -m 644 options.pptp $(PPPDIR)
   
 - clobber: clean
 - 	$(RM) $(PPTP_BIN) $(CALLMGR_BIN) vector_test
 + uninstall:
 + 	$(RM) $(BINDIR)/pptp $(MANDIR)/pptp.8
 diff -urN pptp.orig/patches/patch-ab pptp/patches/patch-ab
 --- pptp.orig/patches/patch-ab	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-ab	2005-05-05 21:39:03.000000000 +0200
 @@ -1,58 +1,22 @@
 -$NetBSD: patch-ab,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: pptp.c
 ---- pptp.c.orig	1998/09/02 14:40:54
 -+++ pptp.c	1999/02/12 14:23:28
 -@@ -71,6 +71,8 @@
 -   /* Step 1: Get IP address for the hostname in argv[1] */
 -   inetaddr = get_ip_address(argv[1]);
 +--- pptp.c.orig	2005-05-05 21:21:37.000000000 +0200
 ++++ pptp.c	2005-05-05 21:25:57.000000000 +0200
 +@@ -259,6 +259,7 @@
   
 -+  log("using remote IP address %s\n", inet_ntoa(inetaddr));
 -+
 -   /* Step 2: Open connection to call manager
 -    *         (Launch call manager if necessary.)
 -    */
 -@@ -127,8 +129,8 @@
 -   }
 +     /* Get IP address for the hostname in argv[1] */
 +     inetaddr = get_ip_address(argv[optind]);
 ++    log("using remote IP address %s\n", inet_ntoa(inetaddr));
 +     optind++;
   
 -   /* Step 6: Do GRE copy until close. */
 --  pptp_gre_copy(call_id, peer_call_id, pty_fd, inetaddr);
 --
 -+  pptp_gre_copy(peer_call_id, call_id, pty_fd, inetaddr);
 -+ 
 - shutdown:
 -   /* on close, kill all. */
 -   kill(parent_pid, SIGTERM);
 -@@ -140,13 +142,14 @@
 - struct in_addr get_ip_address(char *name) {
 -   struct in_addr retval;
 -   struct hostent *host = gethostbyname(name);
 --  if (host==NULL)
 -+  if (host==NULL) {
 -     if (h_errno == HOST_NOT_FOUND)
 -       fatal("gethostbyname: HOST NOT FOUND");
 -     else if (h_errno == NO_ADDRESS)
 -       fatal("gethostbyname: NO IP ADDRESS");
 -     else
 -       fatal("gethostbyname: name server error");
 -+  }
 -   
 -   if (host->h_addrtype != AF_INET)
 -     fatal("Host has non-internet address");
 -@@ -239,9 +242,14 @@
 -   new_argv[0] = PPPD_BINARY;
 -   new_argv[1] = ttydev;
 -   new_argv[2] = "38400";
 --  for (i=0; i<argc; i++)
 --    new_argv[i+3] = argv[i];
 -+  fprintf(stderr, "running pppd: %s %s %s", new_argv[0], new_argv[1], new_argv[2]);
 -+  for (i=0; i<argc; i++) {
 -+      fprintf(stderr, " %s", argv[i]);
 -+      new_argv[i+3] = argv[i];
 -+  }
 -+  fprintf(stderr, "\n");
 -   new_argv[i+3] = NULL;
 -+  
 -   execvp(new_argv[0], new_argv);
 +     /* Find the ppp options, extract phone number */
 +@@ -501,9 +502,11 @@
 +     new_argv[i++] = ttydev;
 +     new_argv[i++] = "38400";
 + #endif
 ++    fprintf(stderr, "running pppd: %s %s %s", new_argv[0], new_argv[1], new_argv[2]);
 +     for (j = 0; j < argc; j++)
 +         new_argv[i++] = argv[j];
 +     new_argv[i] = NULL;
 ++    fprintf(stderr, "\n");
 +     execvp(new_argv[0], new_argv);
   }
   
 diff -urN pptp.orig/patches/patch-ac pptp/patches/patch-ac
 --- pptp.orig/patches/patch-ac	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-ac	1970-01-01 01:00:00.000000000 +0100
 @@ -1,241 +0,0 @@
 -$NetBSD: patch-ac,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: pptp_ctrl.c
 ---- pptp_ctrl.c.orig	1998/09/02 14:40:54
 -+++ pptp_ctrl.c	1999/02/12 14:23:29
 -@@ -159,6 +159,7 @@
 -       hton16(PPTP_MAX_CHANNELS), hton16(PPTP_FIRMWARE_VERSION), 
 -       PPTP_HOSTNAME, PPTP_VENDOR
 -     };
 -+    log("sending start ctrl conn rqst");
 -     if (pptp_send_ctrl_packet(conn, &packet, sizeof(packet)))
 -       conn->conn_state = CONN_WAIT_CTL_REPLY;
 -     else return NULL; /* could not send initial start request. */
 -@@ -211,6 +212,7 @@
 -       hton32(PPTP_BEARER_CAP), hton32(PPTP_FRAME_CAP), 
 -       hton16(PPTP_WINDOW), 0, 0, 0, {0}, {0}
 -     };
 -+    log("sending out call rqst");
 -     if (pptp_send_ctrl_packet(conn, &packet, sizeof(packet))) {
 -       pptp_reset_timer();
 -       call->state.pns = PNS_WAIT_REPLY;
 -@@ -238,6 +240,7 @@
 -    * requests to be made.
 -    */
 - 
 -+  log("sending call clear rqst");
 -   pptp_send_ctrl_packet(conn, &rqst, sizeof(rqst));
 -   pptp_reset_timer();
 -   call->state.pns = PNS_WAIT_DISCONNECT;
 -@@ -272,7 +275,7 @@
 -     pptp_call_close(conn, vector_get_Nth(conn->call, i));
 -     
 -   /* now close connection */
 --  log("Closing PPTP connection");
 -+  log("Closing PPTP connection (sending stop ctrl conn rqst)");
 -   pptp_send_ctrl_packet(conn, &rqst, sizeof(rqst));
 -   pptp_reset_timer(); /* wait 60 seconds for reply */
 -   conn->conn_state = CONN_WAIT_STOP_REPLY;
 -@@ -485,14 +488,27 @@
 - 	hton32(PPTP_FRAME_CAP), hton32(PPTP_BEARER_CAP),
 - 	hton16(PPTP_MAX_CHANNELS), hton16(PPTP_FIRMWARE_VERSION),
 - 	PPTP_HOSTNAME, PPTP_VENDOR };
 -+      log("received start conn rqst: v%d rcode %d ecode %d fcap %x bcap %x chans %d fw %x host `%.64s' vendor `%.64s'",
 -+	  ntoh16(packet->version),
 -+	  packet->result_code,
 -+	  packet->error_code,
 -+	  ntoh32(packet->framing_cap),
 -+	  ntoh32(packet->bearer_cap),
 -+	  ntoh16(packet->max_channels),
 -+	  ntoh16(packet->firmware_rev),
 -+	  packet->hostname,
 -+	  packet->vendor
 -+	  );
 -       if (conn->conn_state == CONN_IDLE) {
 - 	if (ntoh16(packet->version) < PPTP_VERSION) {
 - 	  /* Can't support this (earlier) PPTP_VERSION */
 - 	  reply.version = packet->version;
 - 	  reply.result_code = hton8(5); /* protocol version not supported */
 -+	  log("sending start ctrl conn reply (NAK)");
 - 	  pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
 - 	  pptp_reset_timer(); /* give sender a chance for a retry */
 - 	} else { /* same or greater version */
 -+	  log("sending start ctrl conn reply (ACK)");
 - 	  if (pptp_send_ctrl_packet(conn, &reply, sizeof(reply))) {
 - 	    conn->conn_state=CONN_ESTABLISHED;
 - 	    log("server connection ESTABLISHED.");
 -@@ -506,6 +522,17 @@
 -     {
 -       struct pptp_start_ctrl_conn *packet = 
 - 	(struct pptp_start_ctrl_conn *) buffer;
 -+      log("received start conn reply: v%d rcode %d ecode %d fcap %x bcap %x chans %d fw %x host `%.64s' vendor `%.64s'",
 -+	  ntoh16(packet->version),
 -+	  packet->result_code,
 -+	  packet->error_code,
 -+	  ntoh32(packet->framing_cap),
 -+	  ntoh32(packet->bearer_cap),
 -+	  ntoh16(packet->max_channels),
 -+	  ntoh16(packet->firmware_rev),
 -+	  packet->hostname,
 -+	  packet->vendor
 -+	  );
 -       if (conn->conn_state == CONN_WAIT_CTL_REPLY) {
 - 	/* XXX handle collision XXX [see rfc] */
 - 	if (ntoh16(packet->version) != PPTP_VERSION) {
 -@@ -545,7 +572,14 @@
 - 	PPTP_HEADER_CTRL(PPTP_STOP_CTRL_CONN_RPLY), 
 - 	hton8(1), hton8(PPTP_GENERAL_ERROR_NONE), 0};
 - 
 -+      log("received stop conn rqst: reason %d err %d reserved %d",
 -+	  packet->reason_result,
 -+	  packet->error_code,
 -+	  ntoh16(packet->reserved1)
 -+	  );
 -+
 -       if (conn->conn_state==CONN_IDLE) break;
 -+      log("sending stop ctrl conn reply");
 -       if (pptp_send_ctrl_packet(conn, &reply, sizeof(reply))) {
 - 	if (conn->callback!=NULL) conn->callback(conn, CONN_CLOSE_RQST);
 - 	conn->conn_state=CONN_IDLE;
 -@@ -560,6 +594,11 @@
 -       /* conn_state should be CONN_WAIT_STOP_REPLY, but it 
 -        * could be something else */
 - 
 -+      log("received stop conn reply: reason %d err %d reserved %d",
 -+	  packet->reason_result,
 -+	  packet->error_code,
 -+	  ntoh16(packet->reserved1)
 -+	  );
 -       if (conn->conn_state == CONN_IDLE) break;
 -       conn->conn_state=CONN_IDLE;
 -       pptp_conn_destroy(conn);
 -@@ -570,6 +609,12 @@
 -     {
 -       struct pptp_echo_rply *packet = 
 - 	(struct pptp_echo_rply *) buffer;
 -+      log("received echo rply: id %x result %d err %d reserved %d",
 -+	  ntoh32(packet->identifier),
 -+	  packet->result_code,
 -+	  packet->error_code,
 -+	  ntoh16(packet->reserved1)
 -+	  );
 -       if ((conn->ka_state == KA_OUTSTANDING) && 
 - 	  (ntoh32(packet->identifier)==conn->ka_id)) {
 - 	conn->ka_id++;
 -@@ -586,6 +631,10 @@
 - 	PPTP_HEADER_CTRL(PPTP_ECHO_RPLY), 
 - 	packet->identifier, /* skip hton32(ntoh32(id)) */
 - 	hton8(1), hton8(PPTP_GENERAL_ERROR_NONE), 0};
 -+      log("received echo rqst: id %x",
 -+	  ntoh32(packet->identifier)
 -+	  );
 -+      log("sending echo reply");
 -       pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
 -       pptp_reset_timer();
 -       break;
 -@@ -600,8 +649,23 @@
 - 	0 /* callid */, packet->call_id, 1, PPTP_GENERAL_ERROR_NONE, 0,
 - 	hton32(PPTP_CONNECT_SPEED), 
 - 	hton16(PPTP_WINDOW), hton16(PPTP_DELAY), 0 };
 -+      log("received out call rqst: id %x csn %d minbps %d max %d bearer %x framing %x rsize %d delay %d plen %d rsv1 %d phone `%.64s' sub `%.64s'",
 -+	  ntoh16(packet->call_id),
 -+	  ntoh16(packet->call_sernum),
 -+	  ntoh32(packet->bps_min),
 -+	  ntoh32(packet->bps_max),
 -+	  ntoh32(packet->bearer),
 -+	  ntoh32(packet->framing),
 -+	  ntoh16(packet->recv_size),
 -+	  ntoh16(packet->delay),
 -+	  ntoh16(packet->phone_len),
 -+	  ntoh16(packet->reserved1),
 -+	  packet->phone_num,
 -+	  packet->subaddress
 -+	  );
 -       /* XXX PAC: eventually this should make an outgoing call. XXX */
 -       reply.result_code = hton8(7); /* outgoing calls verboten */
 -+      log("sending out call reply (NAK)");
 -       pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
 -       break;
 -     }
 -@@ -611,6 +675,18 @@
 - 	(struct pptp_out_call_rply *)buffer;
 -       PPTP_CALL * call;
 -       u_int16_t callid = ntoh16(packet->call_id_peer);
 -+
 -+      log("received out call reply: id %x peer %d result %d err %d cause %x speed %d rsize %d delay %d channel %x",
 -+	  ntoh16(packet->call_id),
 -+	  ntoh16(packet->call_id_peer),
 -+	  packet->result_code,
 -+	  packet->error_code,
 -+	  ntoh16(packet->cause_code),
 -+	  ntoh32(packet->speed),
 -+	  ntoh16(packet->recv_size),
 -+	  ntoh16(packet->delay),
 -+	  ntoh32(packet->channel)
 -+	  );
 -       if (!vector_search(conn->call, (int) callid, &call)) {
 - 	log("PPTP_OUT_CALL_RPLY received for non-existant call.");
 - 	break;
 -@@ -634,7 +710,9 @@
 - 	  call->speed        = ntoh32(packet->speed);
 - 	  pptp_reset_timer();
 - 	  if (call->callback!=NULL) call->callback(conn, call, CALL_OPEN_DONE);
 --	  log("Outgoing call established.\n");
 -+	  log("Outgoing call established: cid %d @ %d bps.\n",
 -+	      call->peer_call_id,
 -+	      call->speed);
 - 	}
 -       }
 -       break;
 -@@ -650,10 +728,15 @@
 - 	PPTP_HEADER_CTRL(PPTP_CALL_CLEAR_NTFY), packet->call_id,
 - 	1, PPTP_GENERAL_ERROR_NONE, 0, 0, {0}
 -       };
 -+      log("received call clear rqst: cid %d reserved %d",
 -+	  ntoh16(packet->call_id),
 -+	  ntoh16(packet->reserved1)
 -+	  );
 -       if (vector_contains(conn->call, ntoh16(packet->call_id))) {
 - 	PPTP_CALL * call;
 - 	vector_search(conn->call, ntoh16(packet->call_id), &call);
 - 	if (call->callback!=NULL) call->callback(conn, call, CALL_CLOSE_RQST);
 -+	log("sending call clear ntfy");
 - 	pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
 - 	pptp_call_destroy(conn, call);
 - 	log("Call closed (RQST) (call id %d)", (int) call->call_id);
 -@@ -664,6 +747,14 @@
 -     {
 -       struct pptp_call_clear_ntfy *packet =
 - 	(struct pptp_call_clear_ntfy *)buffer;
 -+      log("received call clear ntfy: cid %d result %d err %d cause %x reserved %d",
 -+	  ntoh16(packet->call_id),
 -+	  packet->result_code,
 -+	  packet->error_code,
 -+	  ntoh16(packet->cause_code),
 -+	  ntoh16(packet->reserved1)
 -+	  );
 -+
 -       if (vector_contains(conn->call, ntoh16(packet->call_id))) {
 - 	PPTP_CALL * call;
 - 	vector_search(conn->call, ntoh16(packet->call_id), &call);
 -@@ -679,6 +770,12 @@
 -       /* this is really dealt with in the HDLC deencapsulation, anyway. */
 -       struct pptp_set_link_info *packet =
 - 	(struct pptp_set_link_info *)buffer;
 -+      log("received set link info: peer %x res %d send %x recv %x\n",
 -+	  ntoh16(packet->call_id_peer),
 -+	  ntoh16(packet->reserved1),
 -+	  ntoh32(packet->send_accm),
 -+	  ntoh32(packet->recv_accm)
 -+	  );
 -       if (ntoh32(packet->send_accm)==0 && ntoh32(packet->recv_accm)==0)
 - 	break; /* this is what we expect. */
 -       /* log it, otherwise. */
 -@@ -752,6 +849,7 @@
 -   else { /* ka_state == NONE */ /* send keep-alive */
 -     struct pptp_echo_rqst rqst = {
 -       PPTP_HEADER_CTRL(PPTP_ECHO_RQST), hton32(global.conn->ka_id) };
 -+    log("sending echo request: %d", global.conn->ka_id);
 -     pptp_send_ctrl_packet(global.conn, &rqst, sizeof(rqst));
 -     global.conn->ka_state = KA_OUTSTANDING;
 -     /* XXX FIXME: wake up ctrl thread -- or will the SIGALRM do that
 diff -urN pptp.orig/patches/patch-ad pptp/patches/patch-ad
 --- pptp.orig/patches/patch-ad	2000-04-10 03:24:39.000000000 +0200
 +++ pptp/patches/patch-ad	1970-01-01 01:00:00.000000000 +0100
 @@ -1,61 +0,0 @@
 -$NetBSD: patch-ad,v 1.2 2000/04/10 01:24:39 jtk Exp $
 -
 -Index: pptp_gre.c
 ---- pptp_gre.c.orig	Wed Feb 18 17:42:14 1998
 -+++ pptp_gre.c	Sun Apr  9 21:21:00 2000
 -@@ -6,8 +6,8 @@
 -  */
 - 
 -+#include <sys/types.h>
 - #include <netinet/in.h>
 - #include <arpa/inet.h>
 - #include <sys/socket.h>
 --#include <sys/types.h>
 - #include <sys/stat.h>
 - #include <sys/time.h>
 -@@ -35,10 +35,10 @@
 - #if 1
 - #include <stdio.h>
 --void print_packet(int fd, void *pack, unsigned len) {
 -+void print_packet(int fd, void *pack, unsigned len, const char *msg) {
 -   unsigned char *b = (unsigned char *)pack;
 -   unsigned i,j;
 -   FILE *out = fdopen(fd, "w");
 - 
 --  fprintf(out,"-- begin packet (%u) --\n", len);
 -+  fprintf(out,"-- begin %s packet (%u) --\n", msg, len);
 -   for (i=0; i<len; i+=16) {
 -     for (j=0; j<8; j++)
 -@@ -120,4 +120,6 @@
 -   if (start>=end) {
 -     if ((status=read(fd,buffer,sizeof(buffer)))<0) return status;
 -+    if (status == 0)
 -+	return -1;			/* FD is closed */
 -     end = status; start = 0;
 -   } 
 -@@ -199,4 +201,5 @@
 -   header = (struct pptp_gre_header *)(buffer+ip_len);
 - 
 -+/*  print_packet(2, buffer, status, "in");*/
 -   /* verify packet (else discard) */
 -   if (((ntoh8(header->ver)&0x7F)!=PPTP_GRE_VER) || /* version should be 1   */
 -@@ -259,5 +262,5 @@
 -   
 -   /* special case ACK with no payload */
 --  if (pack==NULL) 
 -+  if (pack==NULL) {
 -     if (ack_sent != seq_recv) {
 -       u.header.ver |= hton8(PPTP_GRE_FLAG_A);
 -@@ -267,4 +270,5 @@
 -       return write(fd, &u.header, sizeof(u.header)-sizeof(u.header.seq));
 -     } else return 0; /* we don't need to send ACK */
 -+  }
 -   /* send packet with payload */
 -   u.header.flags |= hton8(PPTP_GRE_FLAG_S);
 -@@ -284,5 +288,5 @@
 -   seq_sent = seq; seq++;
 -   /* write this baby out to the net */
 --  /* print_packet(2, u.buffer, header_len+len); */
 -+/*  print_packet(2, u.buffer, header_len+len, "out");*/
 -   return write(fd, u.buffer, header_len+len);
 - }
 diff -urN pptp.orig/patches/patch-ae pptp/patches/patch-ae
 --- pptp.orig/patches/patch-ae	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-ae	1970-01-01 01:00:00.000000000 +0100
 @@ -1,28 +0,0 @@
 -$NetBSD: patch-ae,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: pty.h
 ---- pty.h.orig	1998/09/02 14:40:55
 -+++ pty.h	1998/09/03 13:33:54
 -@@ -19,6 +19,22 @@
 - #define PTYCHAR2	"0123456789abcdef"
 - #endif
 - 
 -+#ifdef __NetBSD__
 -+#define PTYDEV	"/dev/ptyxx"
 -+#define TTYDEV	"/dev/ttyxx"
 -+
 -+#define PTYMAX  (strlen(PTYDEV)+1)
 -+#define TTYMAX  (strlen(TTYDEV)+1)
 -+
 -+#ifdef __i386__
 -+/* PCVT conflicts with ttyv*. */
 -+#define PTYCHAR1 "pqrstuwxyzPQRST"
 -+#else
 -+#define PTYCHAR1 "pqrstuvwxyzPQRST"
 -+#endif
 -+#define PTYCHAR2	"0123456789abcdef"
 -+#endif
 -+
 - /* Get pty/tty pair, put filename in ttydev, ptydev (which must be
 -  * at least PTYMAX characters long), and return file descriptor of
 -  * open pty.
 diff -urN pptp.orig/patches/patch-af pptp/patches/patch-af
 --- pptp.orig/patches/patch-af	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-af	1970-01-01 01:00:00.000000000 +0100
 @@ -1,14 +0,0 @@
 -$NetBSD: patch-af,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: util.c
 ---- util.c.orig	1998/09/02 14:40:55
 -+++ util.c	2000/04/09 23:24:53
 -@@ -18,7 +18,7 @@
 - static void close_log(void) __attribute__ ((destructor));
 - 
 - static void open_log(void) {
 --  openlog(PROGRAM_NAME, LOG_PERROR | LOG_PID, LOG_DAEMON);
 -+  openlog(PROGRAM_NAME, /* LOG_PERROR | (too noisy!) */ LOG_PID, LOG_DAEMON);
 - }
 - static void close_log(void) {
 -   closelog();
 diff -urN pptp.orig/patches/patch-ag pptp/patches/patch-ag
 --- pptp.orig/patches/patch-ag	2000-04-10 03:14:02.000000000 +0200
 +++ pptp/patches/patch-ag	1970-01-01 01:00:00.000000000 +0100
 @@ -1,65 +0,0 @@
 -$NetBSD: patch-ag,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
 -
 -Index: pptp.8
 ---- /dev/null	Sun Apr  9 20:55:33 2000
 -+++ pptp.8	Sun Apr  9 20:55:52 2000
 -@@ -0,0 +1,59 @@
 -+.\" Manual page for pptp-1.0.2
 -+.\" Information gleaned from USING file in the distribution
 -+.\" SH section heading
 -+.\" SS subsection heading
 -+.\" LP paragraph
 -+.\" IP indented paragraph
 -+.\" TP hanging label
 -+.Dd April 9, 2000
 -+.Dt pptp 8
 -+.Sh NAME
 -+.Nm pptp
 -+.Nd Point-to-Point Tunneling Protocol daemon
 -+.Sh SYNOPSIS
 -+.Nm
 -+.Ar hostname
 -+.Op Ar ppp-options
 -+.Sh DESCRIPTION
 -+.Nm
 -+manages
 -+a virtual private network (VPN) connection using Microsoft
 -+PPTP protocols using IP GRE tunneling protocols.
 -+.Nm
 -+uses
 -+.Xr pppd 8
 -+on a pseudo-tty
 -+to negotiate the connection with MS-CHAP authentication.
 -+.Pp
 -+Because
 -+.Nm
 -+uses GRE by using a raw IP socket, it will not work if your kernel has
 -+the
 -+.Xr gre 4
 -+pseudo-device
 -+configured.
 -+The
 -+.Ar hostname
 -+parameter specifies which host should be contacted as the PPTP server.
 -+Additional parameters are passed on to 
 -+.Ic pppd
 -+and typically include a remote username or a file containing options.
 -+.Pp
 -+.Nm
 -+must be run as root.
 -+
 -+.Sh EXAMPLE
 -+.Nm
 -+.Ar vpnhost.company.com
 -+.Ar file
 -+.Pa /etc/ppp/options.pptp.company.com
 -+.Sh FILES
 -+.Pa /var/run/pptp/<ip-address>
 -+is created as a socket.  It is used for communicating with an existing
 -+PPTP call manager for a given remote server host.
 -+.Sh SEE ALSO
 -+.Xr pppd 8 ,
 -+.Xr gre 4 ,
 -+.Pa ${PREFIX}/share/doc/pptp/USING
 -+
 -+