]> git.puffer.fish Git - mirror/frr.git/commit
zebra: label manager race condition fix 4095/head
authorF. Aragon <paco@voltanet.io>
Fri, 5 Apr 2019 13:26:14 +0000 (15:26 +0200)
committerF. Aragon <paco@voltanet.io>
Fri, 5 Apr 2019 13:39:03 +0000 (15:39 +0200)
commit98e9ab8b31804593a140fd147450d455bd26ed4a
tree313d977261dfb9812c19c85d92dcf71d0964d585
parent5eec4615a2ca5992f68572f500ede951960acfa4
zebra: label manager race condition fix

This fix covers the case where two or more events are processed but only one
becoming effective. E.g. when mixing a synchronous label request from a LDP
deamon and an asynchronous request from a BGP daemon it could happen to the
BGP having the label chunk, but the LDP stuck waiting for the response.

Given e.g.

  ldpd     <-------->
  (sync label request)
                       Zebra (label proxy)  <-->  Zebra (shared label manager)
  bgpd     <-------->
  (async label request)

Sequence:

   LDP label request ----->
                               Zebra (label proxy FW) ----> Zebra (LM)
   BGP label request ----->
                               Zebra (label proxy FW) ----> Zebra (LM)
                                                      <---- Zebra (LM) RP LDP
                                                      <---- Zebra (LM) RP BGP

Signed-off-by: F. Aragon <paco@voltanet.io>
zebra/label_manager.c