summaryrefslogtreecommitdiff
path: root/net/pptp
diff options
context:
space:
mode:
authorjtk <jtk>2000-04-10 01:14:01 +0000
committerjtk <jtk>2000-04-10 01:14:01 +0000
commit53bccf9f00f8b78314ed6f39d9d97f332f4ad7e7 (patch)
treeb47967eac56e2dd0fb11d23bb0e9e193b82a66ff /net/pptp
parente2a90fd2fafedd69e87d5735811c00f103c24b4c (diff)
downloadpkgsrc-53bccf9f00f8b78314ed6f39d9d97f332f4ad7e7.tar.gz
PPTP (Point-to-Point Tunneling Protocol) client package, from linux-pptp-1.0.2
No encryption (yet). Tested with one Microsoft PPTP server, YMMV?
Diffstat (limited to 'net/pptp')
-rw-r--r--net/pptp/Makefile22
-rw-r--r--net/pptp/files/md53
-rw-r--r--net/pptp/files/patch-sum9
-rw-r--r--net/pptp/patches/patch-aa51
-rw-r--r--net/pptp/patches/patch-ab58
-rw-r--r--net/pptp/patches/patch-ac241
-rw-r--r--net/pptp/patches/patch-ad75
-rw-r--r--net/pptp/patches/patch-ae28
-rw-r--r--net/pptp/patches/patch-af14
-rw-r--r--net/pptp/patches/patch-ag65
-rw-r--r--net/pptp/pkg/COMMENT1
-rw-r--r--net/pptp/pkg/DESCR21
-rw-r--r--net/pptp/pkg/PLIST23
13 files changed, 611 insertions, 0 deletions
diff --git a/net/pptp/Makefile b/net/pptp/Makefile
new file mode 100644
index 00000000000..eafc95aa785
--- /dev/null
+++ b/net/pptp/Makefile
@@ -0,0 +1,22 @@
+# $NetBSD: Makefile,v 1.1.1.1 2000/04/10 01:14:01 jtk Exp $
+
+DISTNAME= pptp-linux-1.0.2
+PKGNAME= pptp-1.0.2
+CATEGORIES= net
+MASTER_SITES= http://www.pdos.lcs.mit.edu/~cananian/Synaptics/release/
+#EXTRACT_SUFX= .tar.gz
+
+MAINTAINER= jtk@netbsd.org
+HOMEPAGE= http://www.pdos.lcs.mit.edu/~cananian/Projects/PPTP/
+
+#LICENSE= GPL
+
+.include "../../mk/bsd.prefs.mk"
+
+# Not quite yet---special config for MPPE in pppd.
+#.if defined(PPTP_USE_MPPE)
+#DEPENDS+= ppp-mppe-2.3.9:../../net/ppp-mppe
+#CONFIGURE_ARGS+= --with-pppd=${PREFIX}/sbin/pppd
+#.endif
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/net/pptp/files/md5 b/net/pptp/files/md5
new file mode 100644
index 00000000000..1207b5d00a4
--- /dev/null
+++ b/net/pptp/files/md5
@@ -0,0 +1,3 @@
+$NetBSD: md5,v 1.1.1.1 2000/04/10 01:14:01 jtk Exp $
+
+MD5 (pptp-linux-1.0.2.tar.gz) = 257835dbb111673dcf80bdf927a1be87
diff --git a/net/pptp/files/patch-sum b/net/pptp/files/patch-sum
new file mode 100644
index 00000000000..22b50f6e8ad
--- /dev/null
+++ b/net/pptp/files/patch-sum
@@ -0,0 +1,9 @@
+$NetBSD: patch-sum,v 1.1.1.1 2000/04/10 01:14:01 jtk Exp $
+
+MD5 (patch-aa) = 29544fba56603f76fcc3a0696dc15754
+MD5 (patch-ab) = 2534354ae6ffec6004a538e22d952a59
+MD5 (patch-ac) = 97dab2f9ca96479830e9bc98b1cb7fd9
+MD5 (patch-ad) = 69aa96be6c777e7924436b7eb5651df3
+MD5 (patch-ae) = 1f56f3cda1b8fceac6cd43de302ef639
+MD5 (patch-af) = f49fff1fe6f06571895d3702d6cadd86
+MD5 (patch-ag) = 7d073d6e799278a845658aeca5e250ae
diff --git a/net/pptp/patches/patch-aa b/net/pptp/patches/patch-aa
new file mode 100644
index 00000000000..e3ebf75a845
--- /dev/null
+++ b/net/pptp/patches/patch-aa
@@ -0,0 +1,51 @@
+$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
+ 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 *~
+
+ clobber: clean
+ $(RM) $(PPTP_BIN) $(CALLMGR_BIN) vector_test
diff --git a/net/pptp/patches/patch-ab b/net/pptp/patches/patch-ab
new file mode 100644
index 00000000000..b62bef5f4d1
--- /dev/null
+++ b/net/pptp/patches/patch-ab
@@ -0,0 +1,58 @@
+$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]);
+
++ 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 @@
+ }
+
+ /* 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);
+ }
+
diff --git a/net/pptp/patches/patch-ac b/net/pptp/patches/patch-ac
new file mode 100644
index 00000000000..dc32242e879
--- /dev/null
+++ b/net/pptp/patches/patch-ac
@@ -0,0 +1,241 @@
+$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 --git a/net/pptp/patches/patch-ad b/net/pptp/patches/patch-ad
new file mode 100644
index 00000000000..70a485ff2d9
--- /dev/null
+++ b/net/pptp/patches/patch-ad
@@ -0,0 +1,75 @@
+$NetBSD: patch-ad,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
+
+Index: pptp_gre.c
+--- pptp_gre.c.orig 1998/09/02 14:40:54
++++ pptp_gre.c 1999/02/12 14:23:29
+@@ -5,10 +5,10 @@
+ * $Id: patch-ad,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
+ */
+
++#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>
+ #include <unistd.h>
+@@ -34,12 +34,12 @@
+
+ #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++)
+ if (i+2*j+1<len)
+@@ -119,6 +119,8 @@
+ /* this is the only blocking read we will allow */
+ 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;
+ }
+
+@@ -198,6 +200,7 @@
+ ip_len = (buffer[0]&0xF)*4;
+ 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 */
+ (ntoh16(header->protocol)!=PPTP_GRE_PROTO)|| /* GRE protocol for PPTP */
+@@ -258,7 +261,7 @@
+ u.header.call_id = hton16(pptp_gre_call_id);
+
+ /* 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);
+ u.header.payload_len = hton16(0);
+@@ -266,6 +269,7 @@
+ ack_sent = seq_recv;
+ 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);
+ u.header.seq = hton32(seq);
+@@ -283,7 +287,7 @@
+ /* record and increment sequence numbers */
+ 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 --git a/net/pptp/patches/patch-ae b/net/pptp/patches/patch-ae
new file mode 100644
index 00000000000..379bec11f59
--- /dev/null
+++ b/net/pptp/patches/patch-ae
@@ -0,0 +1,28 @@
+$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 --git a/net/pptp/patches/patch-af b/net/pptp/patches/patch-af
new file mode 100644
index 00000000000..e0f0e06b0cd
--- /dev/null
+++ b/net/pptp/patches/patch-af
@@ -0,0 +1,14 @@
+$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 --git a/net/pptp/patches/patch-ag b/net/pptp/patches/patch-ag
new file mode 100644
index 00000000000..ca08135cc02
--- /dev/null
+++ b/net/pptp/patches/patch-ag
@@ -0,0 +1,65 @@
+$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
++
++
diff --git a/net/pptp/pkg/COMMENT b/net/pptp/pkg/COMMENT
new file mode 100644
index 00000000000..a21dc4cf24a
--- /dev/null
+++ b/net/pptp/pkg/COMMENT
@@ -0,0 +1 @@
+PPTP client package for Microsoft VPN servers (no encryption yet)
diff --git a/net/pptp/pkg/DESCR b/net/pptp/pkg/DESCR
new file mode 100644
index 00000000000..ea2de7250ee
--- /dev/null
+++ b/net/pptp/pkg/DESCR
@@ -0,0 +1,21 @@
+pptp-linux
+
+pptp-linux is an implementation of the PPTP protocol for Linux and
+other Unix systems.
+
+The code is released under the terms of the GPL; see the file COPYING
+for details.
+
+You can find notes on installing and using this package in the file
+USING; design notes are in the Documentation directory; and the
+standards documents used to implement pptp-linux can be found in the
+Reference directory.
+
+Discussion of this code is ongoing on the mailing list pptp@debs.fuller.edu,
+subscribe by sending "subscribe" in the body on an email to
+pptp-request@debs.fuller.edu, or look at http://debs.fuller.edu.
+Christoph Lameter is the list organizer.
+
+Re-organization and patches are of course greatly welcomed.
+
+C. Scott Ananian <cananian@alumni.princeton.edu>
diff --git a/net/pptp/pkg/PLIST b/net/pptp/pkg/PLIST
new file mode 100644
index 00000000000..4816c2681df
--- /dev/null
+++ b/net/pptp/pkg/PLIST
@@ -0,0 +1,23 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2000/04/10 01:14:02 jtk Exp $
+sbin/pptp
+share/doc/pptp/USING
+share/doc/pptp/INSTALL
+share/doc/pptp/README
+share/doc/pptp/NEWS
+share/doc/pptp/Reference/README
+share/doc/pptp/Reference/ms-chap.txt
+share/doc/pptp/Reference/pptp-draft.txt
+share/doc/pptp/Reference/rfc1661.txt
+share/doc/pptp/Reference/rfc1662.txt
+share/doc/pptp/Reference/rfc1701.txt
+share/doc/pptp/Reference/rfc1702.txt
+share/doc/pptp/Reference/rfc1990.txt
+share/doc/pptp/Reference/rfc791.txt
+share/doc/pptp/Reference/rfc793.txt
+share/doc/pptp/Documentation/DESIGN.CALLMGR
+share/doc/pptp/Documentation/DESIGN.PPTP
+share/doc/pptp/Documentation/PORTING
+man/man8/pptp.8
+@dirrm share/doc/pptp/Documentation
+@dirrm share/doc/pptp/Reference
+@dirrm share/doc/pptp