Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Jun 1996 12:20:52 -0400
From:      Garrett Wollman <wollman@lcs.mit.edu>
To:        "Daniel M. Eischen" <deischen@iworks.InterWorks.org>
Cc:        current@FreeBSD.org, fenner@parc.xerox.com
Subject:   Re: As of 960608, routed now complains bitterly.
Message-ID:  <9606191620.AA19066@halloran-eldar.lcs.mit.edu>
In-Reply-To: <9606190146.AA01599@iworks.InterWorks.org>
References:  <9606190146.AA01599@iworks.InterWorks.org>

next in thread | previous in thread | raw e-mail | index | archive | help
<<On Tue, 18 Jun 1996 20:46:46 -0500, "Daniel M. Eischen" <deischen@iworks.InterWorks.org> said:

> Add interface ppp0 204.213.233.105 --> 204.213.232.3 metric=1 <PT-TO-PT> <BCAST_RDISC> 
> turn on RIP
> Add    204.213.232.3/32--> 204.213.233.105 metric=1  <IF> ppp0 21:45:28
> Add    204.213.233.105/32--> 127.0.0.1       metric=1  <IF|LOCAL> ppp0 21:45:28
> Send RIPv2 REQUEST to 204.213.232.3.520 via ppp0
> sendto(ppp0, 204.213.232.3.520): Network is down
> Chg interface ppp0 204.213.233.105 --> 204.213.232.3 metric=1 <PT-TO-PT> <BROKE|BCAST_RDISC> 
> Chg    204.213.232.3/32--> 204.213.233.105 metric=1  <IF> ppp0 
>        204.213.232.3/32-->                 metric=16 - hold-down=10 21:43:28

This part looks curious.  Note here that it's trying to send a RIP
message to the other side of your PPP link and getting an ENETDOWN
error.  I'm guessing that the following code is what's causing it:

(from if_ppp.c)
    if (sc->sc_devp == NULL || (ifp->if_flags & IFF_RUNNING) == 0
        || (ifp->if_flags & IFF_UP) == 0 && dst->sa_family != AF_UNSPEC) {
        error = ENETDOWN;       /* sort of */
        goto bad;
    }

What this seems to be saying is: `if there is no TTY attached, or if
the interface is not RUNNING, or if both the interface is not UP and
the attempted write is not for family AF_UNSPEC (meaning raw PPP)'.
My guess would be that there is some window in between the time that
the interface is configured as UP, and the time that it is configured
as RUNNING (perhaps there is some IPCP transaction that has to go on
here), and that `routed' is attempting to send on an interface that is
in such a state.

Here is an experiment you might try... in
/usr/src/usr.sbin/routed/defs.h, look for the lines:

#ifdef sgi
#define IFF_UP_RUNNING (IFF_RUNNING|IFF_UP)
#else
#define IFF_UP_RUNNING IFF_UP
#endif

...and change the `#ifdef sgi' to `#if 1' and see what happens.  You
might have to fix up a few interfaces in the kernel (like the
loopback) so that they properly set IFF_RUNNING in order for this to
work.  (I will do so in -current.)

Also, if you are getting lots of IP_[ADD|DROP]_MEMBERSHIP warnings,
try defining MCAST_PPP_BUG.  I don't think that this should be
necessary, but it can't hurt to try.

-GAWollman

--
Garrett A. Wollman   | Shashish is simple, it's discreet, it's brief. ... 
wollman@lcs.mit.edu  | Shashish is the bonding of hearts in spite of distance.
Opinions not those of| It is a bond more powerful than absence.  We like people
MIT, LCS, ANA, or NSA| who like Shashish.  - Claude McKenzie + Florent Vollant



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