lb: Fix generating illegal key in per-port vip 46/28346/1
authorYasuhiro Nakamura <yanakamu@yahoo-corp.jp>
Mon, 17 Feb 2020 04:03:38 +0000 (13:03 +0900)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Thu, 13 Aug 2020 08:12:25 +0000 (08:12 +0000)
VIP prefix index becomes always 0 when adding a VIP which is already registered different port, causing LB config crash.
This change assigns the same VIP prefix index to the same VIP.

Ticket: https://jira.fd.io/browse/VPP-1834
Type: fix

Signed-off-by: Yasuhiro Nakamura <yanakamu@yahoo-corp.jp>
Change-Id: Ib63b3e58db9bd85714d68cd1292aadd0c8580da8
(cherry picked from commit 551775eaaa9c162c73e15690e4d7580935e9a70a)

src/plugins/lb/lb.c

index b1e0b23..6c9ae60 100644 (file)
@@ -903,6 +903,8 @@ static void lb_vip_add_adjacency(lb_main_t *lbm, lb_vip_t *vip,
       if (!lb_vip_port_find_diff_port(&(vip->prefix), vip->plen,
                                       vip->protocol, vip->port, &vip_idx))
         {
+          lb_vip_t *exists_vip = lb_vip_get_by_index(vip_idx);
+          *vip_prefix_index = exists_vip->vip_prefix_index;
           return;
         }