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