]> git.proxmox.com Git - mirror_frr.git/commit
bgpd: fix handling of "Unsupported Capability"
authorDmitrij Tejblum <tejblum@yandex-team.ru>
Fri, 14 Jan 2011 15:27:05 +0000 (18:27 +0300)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 14 Jan 2011 15:27:05 +0000 (18:27 +0300)
commitc7aa8abd8788c3607ad0131f02e892cf92221e40
tree01495f12e5a9fa0cff3b1ddecb24bccb4975de35
parent403138e189c24f6867824c4eeb668d11564e1ca0
bgpd: fix handling of "Unsupported Capability"

* bgp_packet.c: (bgp_notify_receive) justify the difference between
BGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as
it is explained in RFC5492, page 3, paragraph 1.

"Unsupported Capability" error does not mean, that the peer doesn't
support capabilities advertisement -- quite the opposite (if the peer
would not support capabilities advertisement, the code would be
"Unsupported Optional Parameter"). Thus there is no reason to mark
the peer as one non-supporting capabilities advertisement.

Example: suppose the peer is in fact IPv6-only, but we didn't configure
anything address-family specific for it. Then, the peer would refuse
the session with "Unsupported Capability" code. If we internally set
the peer as non-supporting capabilities advertisement after that, we
will not be able to establish the session with it ever, even with a
fixed configuration -- IPv6-only BGP session cannot be established
without capabilities.

In practice an edge case would be seen as the same IPv6 peer working
with its "neighbor" block read from bgpd.conf, but not working, when
slowly input in "conf t" mode.
bgpd/bgp_packet.c