Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Jun 1997 14:14:46 +0200 (MET DST)
From:      Wilko Bulte <wilko@yedi.iaf.nl>
To:        FreeBSD-hackers@freebsd.org (FreeBSD hackers list), rene@freeze.iaf.nl (Rene 'Freeze' de Vries)
Subject:   ISDN troubles: it now works
Message-ID:  <199706151214.OAA00995@yedi.iaf.nl>

next in thread | raw e-mail | index | archive | help
Hello

We've finally gotten ISDN/PPP to work. There were multiple problems,
including a typo in the kernel config file.

But the best brain crusher was the fact that in isdnpppd the whole
negotiation/setup stuff about local & remote IP addresses and the default
route adding was commented out with #if 0's

Which meant that after we finally got the dialling stuff working we
saw a message telling us which addresses were assigned to local/remote
ends of the connection. The ISP we have uses dynamic addresses.
But isdnpppd never used these adresses to re-setup the link. Cute..
The stupid thing is that all options related to handling dynamic 
adress setup are accepted like in the 'normal' pppd. But are simply
ignored.

I really don't understand why this is done, because after changing the
#if 0 into #if 1 the protocols worked OK. That is, you need also a
small hack in the kernel:

        /* FALLTHROUGH */

        case SIOCSIFFLAGS:
                x= splimp();
                if(!(ifr->ifr_flags & IFF_UP))  {
                    if(sc->sc_outstate != STATE_IDLE){
                            printf("bisdn: SIOCSIFFLAGS disco but fall
thru\n");
#if wilko
                            isdn_disconnect(sc->sc_appl, 0);
#endif
                    }
                    sc->ipp_ppp_sc->sc_if.if_flags &= ~(IFF_UP|IFF_RUNNING);
                    sc->ipp_ppp_sc->sc_npmode[NP_IP]=NPMODE_ERROR;
                } else {
                    sc->ipp_ppp_sc->sc_if.if_flags |= (IFF_UP|IFF_RUNNING);
                    sc->ipp_ppp_sc->sc_npmode[NP_IP]=NPMODE_PASS;
                }
                splx(x);
                break;

It looks like that if you want to use the address negotiation you need
to patch the above in /sys/bisdn/b_isdnipp.c If you don't the connection
is broken ('disco') on every attempt to dial. Dial is ok, and then 
during the re-setup with the assigned addresses (I guess..) the connection
is dropped.

Since I'm not an expert on this stuff I appreciate knowledgable insight/
comments on why the #if 0 are there and why patch to the ioctl is needed. 

Thanks to all the kind people who either helped or offered help to
get things working (Peter, Gary, Wolfgang, Marc).

Wilko
_     ____________________________________________________________________
 |   / o / /  _  Bulte  email: wilko@yedi.iaf.nl - Arnhem, The Netherlands
 |/|/ / / /( (_) 	Do, or do not. There is no 'try' - Yoda
--------------------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706151214.OAA00995>