]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zapi_msg.c
Merge pull request #5789 from donaldsharp/bgp_ebgp_reason
[mirror_frr.git] / zebra / zapi_msg.c
index e3feddba521906dbda602cc06a53ca4e62437723..4d0e34561a5a8854abc889fca35eb41cc3071951 100644 (file)
@@ -1475,6 +1475,8 @@ static void zread_route_add(ZAPI_HANDLER_ARGS)
                api_nh = &api.nexthops[i];
                ifindex_t ifindex = 0;
 
+               nexthop = NULL;
+
                if (IS_ZEBRA_DEBUG_RECV)
                        zlog_debug("nh type %d", api_nh->type);
 
@@ -1773,6 +1775,8 @@ static void zread_hello(ZAPI_HANDLER_ARGS)
                client->instance = instance;
        }
 
+       /* Graceful restart processing for client connect */
+       zebra_gr_client_reconnect(client);
        zsend_capabilities(client, zvrf);
        zebra_vrf_update_all(client);
 stream_failure:
@@ -2277,6 +2281,12 @@ static void zread_vrf_label(ZAPI_HANDLER_ARGS)
        s = msg;
        STREAM_GETL(s, nlabel);
        STREAM_GETC(s, afi);
+
+       if (!(IS_VALID_AFI(afi))) {
+               zlog_warn("Invalid AFI for VRF label: %u", afi);
+               return;
+       }
+
        if (nlabel == zvrf->label[afi]) {
                /*
                 * Nothing to do here move along
@@ -2576,14 +2586,14 @@ static void zserv_error_no_vrf(ZAPI_HANDLER_ARGS)
                zlog_debug("ZAPI message specifies unknown VRF: %d",
                           hdr->vrf_id);
 
-       return zsend_error_msg(client, ZEBRA_NO_VRF, hdr);
+       zsend_error_msg(client, ZEBRA_NO_VRF, hdr);
 }
 
 static void zserv_error_invalid_msg_type(ZAPI_HANDLER_ARGS)
 {
        zlog_info("Zebra received unknown command %d", hdr->command);
 
-       return zsend_error_msg(client, ZEBRA_INVALID_MSG_TYPE, hdr);
+       zsend_error_msg(client, ZEBRA_INVALID_MSG_TYPE, hdr);
 }
 
 void (*const zserv_handlers[])(ZAPI_HANDLER_ARGS) = {
@@ -2660,6 +2670,7 @@ void (*const zserv_handlers[])(ZAPI_HANDLER_ARGS) = {
        [ZEBRA_MLAG_CLIENT_REGISTER] = zebra_mlag_client_register,
        [ZEBRA_MLAG_CLIENT_UNREGISTER] = zebra_mlag_client_unregister,
        [ZEBRA_MLAG_FORWARD_MSG] = zebra_mlag_forward_client_msg,
+       [ZEBRA_CLIENT_CAPABILITIES] = zread_client_capabilities
 };
 
 #if defined(HANDLE_ZAPI_FUZZING)