]> git.puffer.fish Git - matthieu/frr.git/commitdiff
rebase fixups
authorQuentin Young <qlyoung@nvidia.com>
Mon, 15 Nov 2021 23:35:34 +0000 (18:35 -0500)
committerQuentin Young <qlyoung@nvidia.com>
Mon, 15 Nov 2021 23:42:43 +0000 (18:42 -0500)
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
lib/if.c
lib/if.h
lib/zclient.c
ospfd/ospf_main.c
pimd/pim_main.c
vrrpd/vrrp_main.c
zebra/main.c

index a40f04f5a250230c4c49ff46cd1aabbf91906afb..bfe95bcb29647093c36f04c343ef8c2a63b5bb1b 100644 (file)
--- a/lib/if.c
+++ b/lib/if.c
@@ -212,7 +212,10 @@ void if_down_via_zapi(struct interface *ifp)
                (*ifp_master.down_hook)(ifp);
 }
 
-static struct interface *if_create_name(const char *name, struct vrf *vrf)
+#ifndef FUZZING
+static
+#endif
+struct interface *if_create_name(const char *name, struct vrf *vrf)
 {
        struct interface *ifp;
 
index 1012bf5557ea22eb56b3dc40a2b988516feeaa12..4c5fd2075b56bbee34ac09a626c62d1b75eb0f4c 100644 (file)
--- a/lib/if.h
+++ b/lib/if.h
@@ -599,6 +599,10 @@ extern void if_up_via_zapi(struct interface *ifp);
 extern void if_down_via_zapi(struct interface *ifp);
 extern void if_destroy_via_zapi(struct interface *ifp);
 
+#ifdef FUZZING
+struct interface *if_create_name(const char *name, struct vrf *vrf);
+#endif
+
 extern const struct frr_yang_module_info frr_interface_info;
 
 #ifdef __cplusplus
index 25e26ceba61f4d3d0f4f3ab506d2895c8a5c417e..89c66a556450a47e67cc343314e8d32d075f0d3b 100644 (file)
@@ -3912,248 +3912,22 @@ int zclient_read_fuzz(struct zclient *zclient, const uint8_t *data, size_t len)
 
        length -= ZEBRA_HEADER_SIZE;
 
-       zlog_debug("zclient 0x%p command %s VRF %u", (void *)zclient,
-                  zserv_command_string(command), vrf_id);
+       if (zclient_debug)
+               zlog_debug("zclient %p command %s VRF %u", zclient,
+                          zserv_command_string(command), vrf_id);
 
-       switch (command) {
-       case ZEBRA_CAPABILITIES:
-               zclient_capability_decode(command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_ROUTER_ID_UPDATE:
-               if (zclient->router_id_update)
-                       (*zclient->router_id_update)(command, zclient, length,
-                                                    vrf_id);
-               break;
-       case ZEBRA_VRF_ADD:
-               zclient_vrf_add(zclient, vrf_id);
-               break;
-       case ZEBRA_VRF_DELETE:
-               zclient_vrf_delete(zclient, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_ADD:
-               zclient_interface_add(zclient, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_DELETE:
-               zclient_interface_delete(zclient, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_ADDRESS_ADD:
-               if (zclient->interface_address_add)
-                       (*zclient->interface_address_add)(command, zclient,
-                                                         length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_ADDRESS_DELETE:
-               if (zclient->interface_address_delete)
-                       (*zclient->interface_address_delete)(command, zclient,
-                                                            length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_BFD_DEST_UPDATE:
-               if (zclient->interface_bfd_dest_update)
-                       (*zclient->interface_bfd_dest_update)(command, zclient,
-                                                             length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_NBR_ADDRESS_ADD:
-               if (zclient->interface_nbr_address_add)
-                       (*zclient->interface_nbr_address_add)(command, zclient,
-                                                             length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_NBR_ADDRESS_DELETE:
-               if (zclient->interface_nbr_address_delete)
-                       (*zclient->interface_nbr_address_delete)(
-                               command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_UP:
-               zclient_interface_up(zclient, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_DOWN:
-               zclient_interface_down(zclient, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_VRF_UPDATE:
-               if (zclient->interface_vrf_update)
-                       (*zclient->interface_vrf_update)(command, zclient,
-                                                        length, vrf_id);
-               break;
-       case ZEBRA_NEXTHOP_UPDATE:
-               if (zclient_debug)
-                       zlog_debug("zclient rcvd nexthop update");
-               if (zclient->nexthop_update)
-                       (*zclient->nexthop_update)(command, zclient, length,
-                                                  vrf_id);
-               break;
-       case ZEBRA_IMPORT_CHECK_UPDATE:
-               if (zclient_debug)
-                       zlog_debug("zclient rcvd import check update");
-               if (zclient->import_check_update)
-                       (*zclient->import_check_update)(command, zclient,
-                                                       length, vrf_id);
-               break;
-       case ZEBRA_BFD_DEST_REPLAY:
-               if (zclient->bfd_dest_replay)
-                       (*zclient->bfd_dest_replay)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_REDISTRIBUTE_ROUTE_ADD:
-               if (zclient->redistribute_route_add)
-                       (*zclient->redistribute_route_add)(command, zclient,
-                                                          length, vrf_id);
-               break;
-       case ZEBRA_REDISTRIBUTE_ROUTE_DEL:
-               if (zclient->redistribute_route_del)
-                       (*zclient->redistribute_route_del)(command, zclient,
-                                                          length, vrf_id);
-               break;
-       case ZEBRA_INTERFACE_LINK_PARAMS:
-               if (zclient->interface_link_params)
-                       (*zclient->interface_link_params)(command, zclient,
-                                                         length, vrf_id);
-               break;
-       case ZEBRA_FEC_UPDATE:
-               if (zclient_debug)
-                       zlog_debug("zclient rcvd fec update");
-               if (zclient->fec_update)
-                       (*zclient->fec_update)(command, zclient, length);
-               break;
-       case ZEBRA_LOCAL_ES_ADD:
-               if (zclient->local_es_add)
-                       (*zclient->local_es_add)(command, zclient, length,
-                                                vrf_id);
-               break;
-       case ZEBRA_LOCAL_ES_DEL:
-               if (zclient->local_es_del)
-                       (*zclient->local_es_del)(command, zclient, length,
-                                                vrf_id);
-               break;
-       case ZEBRA_VNI_ADD:
-               if (zclient->local_vni_add)
-                       (*zclient->local_vni_add)(command, zclient, length,
-                                                 vrf_id);
-               break;
-       case ZEBRA_VNI_DEL:
-               if (zclient->local_vni_del)
-                       (*zclient->local_vni_del)(command, zclient, length,
-                                                 vrf_id);
-               break;
-       case ZEBRA_L3VNI_ADD:
-               if (zclient->local_l3vni_add)
-                       (*zclient->local_l3vni_add)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_L3VNI_DEL:
-               if (zclient->local_l3vni_del)
-                       (*zclient->local_l3vni_del)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_MACIP_ADD:
-               if (zclient->local_macip_add)
-                       (*zclient->local_macip_add)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_MACIP_DEL:
-               if (zclient->local_macip_del)
-                       (*zclient->local_macip_del)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_IP_PREFIX_ROUTE_ADD:
-               if (zclient->local_ip_prefix_add)
-                       (*zclient->local_ip_prefix_add)(command, zclient,
-                                                       length, vrf_id);
-               break;
-       case ZEBRA_IP_PREFIX_ROUTE_DEL:
-               if (zclient->local_ip_prefix_del)
-                       (*zclient->local_ip_prefix_del)(command, zclient,
-                                                       length, vrf_id);
-               break;
-       case ZEBRA_PW_STATUS_UPDATE:
-               if (zclient->pw_status_update)
-                       (*zclient->pw_status_update)(command, zclient, length,
-                                                    vrf_id);
-               break;
-       case ZEBRA_ROUTE_NOTIFY_OWNER:
-               if (zclient->route_notify_owner)
-                       (*zclient->route_notify_owner)(command, zclient, length,
-                                                      vrf_id);
-               break;
-       case ZEBRA_RULE_NOTIFY_OWNER:
-               if (zclient->rule_notify_owner)
-                       (*zclient->rule_notify_owner)(command, zclient, length,
-                                                     vrf_id);
-               break;
-       case ZEBRA_GET_LABEL_CHUNK:
-               if (zclient->label_chunk)
-                       (*zclient->label_chunk)(command, zclient, length,
-                                               vrf_id);
-               break;
-       case ZEBRA_IPSET_NOTIFY_OWNER:
-               if (zclient->ipset_notify_owner)
-                       (*zclient->ipset_notify_owner)(command, zclient, length,
-                                                     vrf_id);
-               break;
-       case ZEBRA_IPSET_ENTRY_NOTIFY_OWNER:
-               if (zclient->ipset_entry_notify_owner)
-                       (*zclient->ipset_entry_notify_owner)(command,
-                                                    zclient, length,
-                                                    vrf_id);
-               break;
-       case ZEBRA_IPTABLE_NOTIFY_OWNER:
-               if (zclient->iptable_notify_owner)
-                       (*zclient->iptable_notify_owner)(command,
-                                                zclient, length,
-                                                vrf_id);
-               break;
-       case ZEBRA_VXLAN_SG_ADD:
-               if (zclient->vxlan_sg_add)
-                       (*zclient->vxlan_sg_add)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_VXLAN_SG_DEL:
-               if (zclient->vxlan_sg_del)
-                       (*zclient->vxlan_sg_del)(command, zclient, length,
-                                                   vrf_id);
-               break;
-       case ZEBRA_MLAG_PROCESS_UP:
-               zclient_mlag_process_up(command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_MLAG_PROCESS_DOWN:
-               zclient_mlag_process_down(command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_MLAG_FORWARD_MSG:
-               zclient_mlag_handle_msg(command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_ERROR:
-               zclient_handle_error(command, zclient, length, vrf_id);
-               break;
-       case ZEBRA_OPAQUE_MESSAGE:
-               if (zclient->opaque_msg_handler)
-                       (*zclient->opaque_msg_handler)(command, zclient, length,
-                                                      vrf_id);
-               break;
-       case ZEBRA_OPAQUE_REGISTER:
-               if (zclient->opaque_register_handler)
-                       (*zclient->opaque_register_handler)(command, zclient,
-                                                           length, vrf_id);
-               break;
-       case ZEBRA_OPAQUE_UNREGISTER:
-               if (zclient->opaque_unregister_handler)
-                       (*zclient->opaque_unregister_handler)(command, zclient,
-                                                           length, vrf_id);
-               break;
-       case ZEBRA_SR_POLICY_NOTIFY_STATUS:
-               if (zclient->sr_policy_notify_status)
-                       (*zclient->sr_policy_notify_status)(command, zclient,
-                                                           length, vrf_id);
-               break;
-       case ZEBRA_CLIENT_CLOSE_NOTIFY:
-               if (zclient->zebra_client_close_notify)
-                       (*zclient->zebra_client_close_notify)(command, zclient,
-                                                             length, vrf_id);
-       default:
-               break;
-       }
+       if (command < array_size(lib_handlers) && lib_handlers[command])
+               lib_handlers[command](command, zclient, length, vrf_id);
+       if (command < zclient->n_handlers && zclient->handlers[command])
+               zclient->handlers[command](command, zclient, length, vrf_id);
 
        if (zclient->sock < 0)
                /* Connection was closed during packet processing. */
                return -1;
 
+       /* Register read thread. */
        stream_reset(zclient->ibuf);
+       zclient_event(ZCLIENT_READ, zclient);
 
        return 0;
 }
index 857d86a87167d449d86b02e9e1831f06fbf7882a..cbf8c8a1dfea59a5a8966f7a1e7b78a417f8fe86 100644 (file)
@@ -187,7 +187,7 @@ static bool FuzzingInit(void)
 static struct ospf *FuzzingCreateOspf(void)
 {
        struct prefix p;
-       struct interface *ifp = if_create_ifindex(69, 0);
+       struct interface *ifp = if_get_by_name("fuzziface", 0, "default");
        ifp->mtu = 68;
        str2prefix("11.0.2.0/24", &p);
 
@@ -272,7 +272,7 @@ int main(int argc, char **argv)
 #ifdef __AFL_HAVE_MANUAL_CONTROL
        __AFL_INIT();
 #endif
-       uint8_t *input;
+       uint8_t *input = NULL;
        int r = frrfuzz_read_input(&input);
 
        if (r < 0 || !input)
index a72ac07cecd52e90ce2215d6638d287bf5d488e2..9ba457cc9474f62a416dacfcbbfb2d81a6f646b9 100644 (file)
@@ -56,6 +56,8 @@
 #include "fuzz.h"
 #include "pim_pim.h"
 #include "pim_mroute.h"
+#include "pim_tlv.h"
+#include "pim_neighbor.h"
 #endif
 
 extern struct host host;
@@ -147,7 +149,7 @@ static bool FuzzingInit(void)
        str2prefix("27.0.0.9/24", &p);
 
        /* Create system interface */
-       FuzzingIfp = if_create_name("fuzziface", VRF_DEFAULT);
+       FuzzingIfp = if_get_by_name("fuzziface", VRF_DEFAULT, "default");
        if_set_index(FuzzingIfp, 69);
 
        connected_add_by_prefix(FuzzingIfp, &p, NULL);
index d608e8019882f23f19214ed44dd3cad634ae2a1c..962d5aec73667a69b93cf496f65d9bb9e166e07b 100644 (file)
@@ -157,7 +157,7 @@ static struct vrrp_vrouter *FuzzingCreateVr(void)
        struct interface *ifp;
        struct prefix p;
 
-       ifp = if_create_ifindex(69, 0);
+       ifp = if_get_by_name("fuzziface", VRF_DEFAULT, "default");
        ifp->mtu = 68;
        str2prefix("11.0.2.1/24", &p);
        connected_add_by_prefix(ifp, &p, NULL);
index d36cce25e40e2249dd6616910e424abb366814e5..c8c71ed8a6b6be6e44d71c51dd1b00962a5c440c 100644 (file)
@@ -391,14 +391,13 @@ int main(int argc, char **argv)
 
 #ifdef FUZZING
        FuzzingInit();
-       FuzzingInitialized = true;
        FuzzingZc = zserv_client_create(69);
 
 #ifdef __AFL_HAVE_MANUAL_CONTROL
        __AFL_INIT();
 #endif /* __AFL_HAVE_MANUAL_CONTROL */
 
-       uint8_t *input;
+       uint8_t *input = NULL;
        int r = frrfuzz_read_input(&input);
 
        int ret = LLVMFuzzerTestOneInput(input, r);