CVSROOT:        /cvs
Module name:    src
Changes by:     ren...@cvs.openbsd.org  2016/06/08 16:00:12

Modified files:
        usr.sbin/ldpd  : notification.c 

Log message:
Change what we consider a NACK for our Initialization messages.

RFC 5036 says the following:
"It is possible for a pair of incompatibly configured LSRs that
disagree on session parameters to engage in an endless sequence of
messages as each NAKs the other's Initialization messages with Error
Notification messages.

An LSR MUST throttle its session setup retry attempts with an
exponential backoff in situations where Initialization messages are
being NAK'd".

The problem here is that the RFC is not very explicit of what can be
a NACK. We were considering only the following notification messages
as NACKs:
* Session Rejected/No Hello;
* Session Rejected/Parameters Advertisement Mode;
* Session Rejected/Parameters Max PDU Length;
* Session Rejected/Parameters Label Range;
* Session Rejected/Bad KeepAlive Time.

It turns out that some implementations can NACK with a Shutdown
notification. And there's the possibility of other implementations using
different notifications as well.

To fix this, consider any fatal notification as a NACK when the neighbor
is in the OPENSENT state (i.e. we sent an Initialization and we're
waiting for a response).

Fixes the following ANVL LDP tests: 6.19, 6.21 and 6.22

Reply via email to