8th April 2005

On Thu, Apr 07, 2005 at 07:36:41AM -0700, Roark Hennessy wrote:
> I find in order to get the tunnel working I have to do a
> route add -host <target_vpn_addr> gateway <my-netgear-wireless-router> dev
+ethN
> Can this be done automatically in the config somewhere?

Not everybody needs this in order to get the tunnel working, it depends
on the configuration of the server, and it is problematic calculating
the correct route to add.  However, the GUI PPTP client (pptpconfig)
does this automatically, and when done unnecessarily it seems harmless.

I'll take a patch that implements the same thing in C within pptp, so
that people who don't use the GUI get it done for them.

Here's what the pptpconfig.php program does;

- the IP address of the PPTP server is obtained from the name, using
  gethostbyname(),

- the command "ip route get $ip | head -1" is executed, where $ip is the
  IP address determined above, and the result of the command is stored;
  it is a route specification of the path to the server before the
  tunnel is started,

- in routing_start(), an "ip route add" command is done using the route
  specification obtained above,

- when the tunnel is shutdown, an "ip route del" command is done using
  the same route specification.

I would prefer that the patch implements this by embedding the
equivalent syscalls within the pptp program, rather than use system() or
popen() to execute the /usr/sbin/ip program.

I would also prefer that there be a command line option for disabling
the feature.


--


10th March 2005

- call manager is not being reused as it was designed to be; if a
tunnel is started within a minute of a tunnel being stopped, it does
not succeed; symptom is LCP ConfReq's without any traffic from the
server.

--

- finish --max-echo-wait

11th August 2004

- add two configurable timeouts for echo generation and echo reply timeout,
  requested by Tobias Brox.

- ship .spec with tarball.

5th June 2004

- command line as shown by ps is corrupted.  Reported by Andre Ruiz
  <andre@ruiz.net>

5th June 2004

- on Fedora Core 2, after the tunnel is stopped by the GUI, the pptp
process spins with a select() on FD's 0 and 1 (the control connection
and the UNIX domain socket respectively) and read()'s on FD 0 which
return 0.  Eventually the process stops because of control connection
ping failure.  Before that happens, any attempt to start another
connection appears to hang; probably because the process already has a
raw socket open to receive GRE packets from the server.

pptp should handle a read() returning zero on the control connection
as a termination.

# lsof
COMMAND  PID USER   FD   TYPE     DEVICE    SIZE   NODE NAME
pptp    4082 root    0u  IPv4      12307            TCP lenny.lan:ms-sql-s->quozl.lan:1723 (CLOSE_WAIT)
pptp    4082 root    1u  unix 0x04698380          12308 /var/run/pptp/255.255.255.255
pptp    4082 root    2w   CHR        1,3          67097 /dev/null
pptp    4082 root    3u  unix 0x04698500          12304 socket
pptp    4082 root    4u   CHR      136,5              7 /dev/pts/5
pptp    4082 root    5u   CHR      136,5              7 /dev/pts/5
pptp    4082 root    6u   CHR      136,5              7 /dev/pts/5
pptp    4082 root    7r  FIFO        0,7          12241 pipe
pptp    4082 root    8w  FIFO        0,7          12241 pipe
pptp    4082 root    9u   raw                     12305 0800000A:002F->0500000A:0000 st=01
pptp    4082 root   10u  unix 0x04698b00          12310 /var/run/pptp/255.255.255.255

# strace
read(0, "", 512)                        = 0
select(2, [0 1], [], NULL, NULL)        = 1 (in [0])
read(0, "", 512)                        = 0
select(2, [0 1], [], NULL, NULL)        = 1 (in [0])


13th February 2004

- timeout connect earlier, with option to extend timeout.

11th June 2003

- support --version  [JJ]

20th May 2003

- GRE stats to a pipe or shared memory, for GUI to use

15th February 2003

- pptp.8 update man page for new options
- pptp.c long_options array should use NULL for second last arg, not 0
- pptp.c use getopt_long more simply, e.g. set flags in option array

1st May 2002

- log failure of write() to raw socket, as Ryan Murray
  <rmurray@debian.org> has encountered an EPERM situation that was not
  being logged.

12th February 2002

- clean up -T errors in pptp-command,

23rd December 2000

Things to do:
  Autoconf/automake this beastie.
  Fix do_gre_copy semantics to properly handle multiple calls.
   Like the call manager, there should only be one gre-copy process
   per connection.  This process needs to funnel packets to different
   output tty's, though, depending on the call-id embedded in the
   GRE encapsulation.  pptp.c must then be modified to use an
   already-existing gre-copy process in the same way it uses an
   already-existing call manager.

$Id: TODO,v 1.23 2005/04/07 23:35:11 quozl Exp $	
