]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge branch 'stable/3.0'
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 18 May 2017 12:14:00 +0000 (14:14 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Thu, 18 May 2017 12:14:00 +0000 (14:14 +0200)
Conflicts:
ldpd/lde.c
zebra/label_manager.c

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
1  2 
bgpd/bgp_zebra.c
ldpd/lde.c
lib/zclient.c
zebra/label_manager.c
zebra/label_manager.h
zebra/zserv.c

Simple merge
diff --cc ldpd/lde.c
index bef35f3194283bdf3035829062e068df51ab817c,36998e7cf87f28993578f4e545b7fbfeecc007b2..8d2a9dd9dc58717a87be4901dfc1758ca42873de
@@@ -1610,27 -1582,6 +1610,29 @@@ lde_address_list_free(struct lde_nbr *l
        }
  }
  
 +static void
 +zclient_sync_init(u_short instance)
 +{
 +      /* Initialize special zclient for synchronous message exchanges. */
 +      log_debug("Initializing synchronous zclient for label manager");
 +      zclient_sync = zclient_new(master);
 +      zclient_sync->sock = -1;
 +      zclient_sync->redist_default = ZEBRA_ROUTE_LDP;
 +      zclient_sync->instance = instance;
 +      while (zclient_socket_connect(zclient_sync) < 0) {
 +              log_warnx("Error connecting synchronous zclient!");
 +              sleep(1);
 +      }
++      /* make socket non-blocking */
++      sock_set_nonblock(zclient_sync->sock);
 +
 +      /* Connect to label manager */
 +      while (lm_label_manager_connect(zclient_sync) != 0) {
 +              log_warnx("Error connecting to label manager!");
 +              sleep(1);
 +      }
 +}
 +
  static void
  lde_del_label_chunk(void *val)
  {
@@@ -1645,10 -1595,9 +1647,8 @@@ lde_get_label_chunk(void
  
        log_debug("Getting label chunk");
        ret = lm_get_label_chunk(zclient_sync, 0, CHUNK_SIZE, &start, &end);
 -      if (ret < 0)
 -      {
 +      if (ret < 0) {
                log_warnx("Error getting label chunk!");
-               close(zclient_sync->sock);
-               zclient_sync->sock = -1;
                return -1;
        }
  
diff --cc lib/zclient.c
Simple merge
index cbb35631acb5581a5dab567f9852126793b64883,08f3c3cfe91e989e876172fa3ca45b71e1a3ebf2..508ba5b9231012d1680ea9b5e451d7d7b20e40dc
@@@ -140,8 -194,9 +193,8 @@@ static int lm_zclient_connect(struct th
  
        if (zclient_socket_connect(zclient) < 0) {
                zlog_err("Error connecting synchronous zclient!");
-               thread_add_timer(zebrad.master, zclient_connect, zclient,
 -              THREAD_TIMER_ON(zebrad.master, zclient->t_connect,
 -                                              lm_zclient_connect,
 -                                              zclient, CONNECTION_DELAY);
++              thread_add_timer(zebrad.master, lm_zclient_connect, zclient,
 +                               CONNECTION_DELAY, &zclient->t_connect);
                return -1;
        }
  
Simple merge
diff --cc zebra/zserv.c
Simple merge