On Wed, Dec 29, 1999 at 10:09:05PM +0000, Iain Stevenson wrote:
> Hi list,
>
> [...]
>
> I'm no Linux programmer but I've been through some of the code for diald and
> pppd and included additional log messages to checkpoint progress and argument
> lists. This has shown that diald passes the arguments correctly to pppd when
> 'exec'ing it. I have compared a manual start with a diald start and added
> pppd options to diald.conf where there are differences (except for specifying
> the MRU and MTU size). So, whether diald or manual connection is used, the
> options received by pppd are the same.
Did you make sure not to specify options in the pppd options file which
should not be?
>From the diald man page:
WARNING: Note that some pppd commands
should not be specified, not even in the
/etc/ppp/options file, because they will interfere
with the proper operation of diald. In particular
you should not specify the tty device, the baud
rate, nor any of the options crtscts, xonxoff,
-crtscts, defaultroute, lock, netmask, -detach,
modem, local, mtu and proxyarp. Use the equivalent
diald commands to control these pppd settings.
>
> The connection establishment through diald hangs within pppd at the point
> where an attempt is made to reopen the tty device. The relevant code in the
> "main.c" routine of pppd is:
>
> /* reopen tty if necessary to wait for carrier */
> if (connector == NULL && modem && devnam[0] != 0) {
> for (;;) {
> if ((i = open(devnam, O_RDWR)) >= 0) - HANGS HERE!
> break;
> if (errno != EINTR) {
> error("Failed to reopen %s: %m", devnam);
> status = EXIT_OPEN_FAILED;
> }
> if (!persist || errno != EINTR || hungup || kill_link)
> goto fail;
> }
>
> There is no return from the "i = open(devnam, O_RDRW)" even though devnam is
> specified correctly as /dev/ttyS0.
Just to make sure -- you printed out messages to show that it was not
returning? If so, did you make sure you flushed the output? I know
it's kind of silly, but I make that mistake all the time.
> Hence the modem has connected to the
> remote router but no protocol negotiation ever takes place. When diald times
> out and kills pppd, the program continues after the "i = open(devnam, O_RDRW)"
> and dies somewhere - I haven't traced this.
Have you got this working with pppd sans diald? Is there any process
which could be holding onto /dev/ttyS0?
This seems very strange to me. I find it doubtful that the bug is
in pppd, but from what you're saying it sounds like pppd is getting
the right information and dying. I'm not sure, however, why open()
is hanging like that.
I also have not tried your kernel/pppd/diald combination, and I know
nothing about the intricacies of PowerMac hardware.
hth
Tim
-
To unsubscribe from this list: send the line "unsubscribe linux-diald" in
the body of a message to [EMAIL PROTECTED]