diff --git a/bgpd/bgp_addpath.c b/bgpd/bgp_addpath.c index 461e60dbfc..748fcc92b4 100644 --- a/bgpd/bgp_addpath.c +++ b/bgpd/bgp_addpath.c @@ -174,9 +174,11 @@ bool bgp_addpath_tx_path(enum bgp_addpath_strat strat, struct bgp_path_info *pi) return true; else return false; - default: + case BGP_ADDPATH_MAX: return false; } + + assert(!"Reached end of function we should never hit"); } static void bgp_addpath_flush_type_rn(struct bgp *bgp, afi_t afi, safi_t safi, diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index c993707206..d8acbcd19a 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -1228,7 +1228,7 @@ static int evpn_zebra_install(struct bgp *bgp, struct bgpevpn *vpn, { int ret; uint8_t flags; - int flood_control; + int flood_control = VXLAN_FLOOD_DISABLED; uint32_t seq; if (p->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE) { @@ -1298,7 +1298,12 @@ static int evpn_zebra_install(struct bgp *bgp, struct bgpevpn *vpn, flood_control = VXLAN_FLOOD_PIM_SM; break; - default: + case PMSI_TNLTYPE_NO_INFO: + case PMSI_TNLTYPE_RSVP_TE_P2MP: + case PMSI_TNLTYPE_MLDP_P2MP: + case PMSI_TNLTYPE_PIM_SSM: + case PMSI_TNLTYPE_PIM_BIDIR: + case PMSI_TNLTYPE_MLDP_MP2MP: flood_control = VXLAN_FLOOD_DISABLED; break; } diff --git a/bgpd/bgp_flowspec_util.c b/bgpd/bgp_flowspec_util.c index 9f3ea499ff..191b9f16fd 100644 --- a/bgpd/bgp_flowspec_util.c +++ b/bgpd/bgp_flowspec_util.c @@ -231,7 +231,7 @@ int bgp_flowspec_ip_address(enum bgp_flowspec_util_nlri_t type, prefix_copy(prefix, &prefix_local); break; case BGP_FLOWSPEC_VALIDATE_ONLY: - default: + case BGP_FLOWSPEC_RETURN_JSON: break; } return offset; @@ -326,7 +326,7 @@ int bgp_flowspec_op_decode(enum bgp_flowspec_util_nlri_t type, mval++; break; case BGP_FLOWSPEC_VALIDATE_ONLY: - default: + case BGP_FLOWSPEC_RETURN_JSON: /* no action */ break; } @@ -436,7 +436,7 @@ int bgp_flowspec_bitmask_decode(enum bgp_flowspec_util_nlri_t type, mval++; break; case BGP_FLOWSPEC_VALIDATE_ONLY: - default: + case BGP_FLOWSPEC_RETURN_JSON: /* no action */ break; } diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 9624adfbe2..faf3a4994d 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -2397,7 +2397,7 @@ void bgp_fsm_nht_update(struct peer *peer, bool has_valid_nexthops) BGP_EVENT_ADD(peer, TCP_fatal_error); case Clearing: case Deleted: - default: + case BGP_STATUS_MAX: break; } } diff --git a/bgpd/bgp_mplsvpn_snmp.c b/bgpd/bgp_mplsvpn_snmp.c index 8d5daa49c8..ea147e55b9 100644 --- a/bgpd/bgp_mplsvpn_snmp.c +++ b/bgpd/bgp_mplsvpn_snmp.c @@ -1264,7 +1264,7 @@ bgp_lookup_route(struct bgp *l3vpn_bgp, struct bgp_dest **dest, == 0) return pi; break; - default: + case IPADDR_NONE: return pi; } } @@ -1627,13 +1627,13 @@ static uint8_t *mplsL3vpnRteTable(struct variable *v, oid name[], case BLACKHOLE_REJECT: return SNMP_INTEGER( MPLSL3VPNVRFRTECIDRTYPEREJECT); - default: + case BLACKHOLE_UNSPEC: + case BLACKHOLE_NULL: + case BLACKHOLE_ADMINPROHIB: return SNMP_INTEGER( MPLSL3VPNVRFRTECIDRTYPEBLACKHOLE); } - default: - return SNMP_INTEGER( - MPLSL3VPNVRFRTECIDRTYPEOTHER); + break; } } else return SNMP_INTEGER(MPLSL3VPNVRFRTECIDRTYPEOTHER); diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c index 659e93bdfa..3e361fccfd 100644 --- a/bgpd/bgp_open.c +++ b/bgpd/bgp_open.c @@ -167,7 +167,8 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json, "capabilityErrorMultiProtocolAfi", "L2VPN"); break; - default: + case AFI_UNSPEC: + case AFI_MAX: json_object_int_add( json_cap, "capabilityErrorMultiProtocolAfiUnknown", @@ -217,7 +218,8 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json, "capabilityErrorMultiProtocolSafi", "flowspec"); break; - default: + case SAFI_UNSPEC: + case SAFI_MAX: json_object_int_add( json_cap, "capabilityErrorMultiProtocolSafiUnknown", @@ -237,7 +239,8 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json, case AFI_L2VPN: vty_out(vty, "AFI L2VPN, "); break; - default: + case AFI_UNSPEC: + case AFI_MAX: vty_out(vty, "AFI Unknown %d, ", ntohs(mpc.afi)); break; @@ -264,7 +267,8 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json, case SAFI_EVPN: vty_out(vty, "SAFI EVPN"); break; - default: + case SAFI_UNSPEC: + case SAFI_MAX: vty_out(vty, "SAFI Unknown %d ", mpc.safi); break; diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index d7ff0e3c0a..24f5725fe4 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -12058,9 +12058,16 @@ const struct prefix_rd *bgp_rd_from_dest(const struct bgp_dest *dest, case SAFI_ENCAP: case SAFI_EVPN: return (struct prefix_rd *)(bgp_dest_get_prefix(dest)); - default: + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: return NULL; } + + assert(!"Reached end of function when we were not expecting it"); } /* Display specified route of BGP table. */ @@ -13285,7 +13292,8 @@ static void bgp_table_stats_walker(struct thread *t) case AFI_L2VPN: space = EVPN_ROUTE_PREFIXLEN; break; - default: + case AFI_UNSPEC: + case AFI_MAX: return; } @@ -13540,7 +13548,8 @@ static int bgp_table_stats_single(struct vty *vty, struct bgp *bgp, afi_t afi, case AFI_L2VPN: bitlen = EVPN_ROUTE_PREFIXLEN; break; - default: + case AFI_UNSPEC: + case AFI_MAX: break; } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index d837601f32..daa435bb2d 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -178,10 +178,14 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi) return BGP_VPNV4_NODE; case SAFI_FLOWSPEC: return BGP_FLOWSPECV4_NODE; - default: + case SAFI_UNSPEC: + case SAFI_ENCAP: + case SAFI_EVPN: + case SAFI_MAX: /* not expected */ return BGP_IPV4_NODE; } + break; case AFI_IP6: switch (safi) { case SAFI_UNICAST: @@ -194,10 +198,14 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi) return BGP_VPNV6_NODE; case SAFI_FLOWSPEC: return BGP_FLOWSPECV6_NODE; - default: - /* not expected */ + case SAFI_UNSPEC: + case SAFI_ENCAP: + case SAFI_EVPN: + case SAFI_MAX: + /* not expected and the return value seems wrong */ return BGP_IPV4_NODE; } + break; case AFI_L2VPN: return BGP_EVPN_NODE; case AFI_UNSPEC: @@ -535,7 +543,9 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi) return "ipv4-labeled-unicast"; case SAFI_FLOWSPEC: return "ipv4-flowspec"; - default: + case SAFI_UNSPEC: + case SAFI_EVPN: + case SAFI_MAX: return "unknown-afi/safi"; } break; @@ -553,7 +563,9 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi) return "ipv6-labeled-unicast"; case SAFI_FLOWSPEC: return "ipv6-flowspec"; - default: + case SAFI_UNSPEC: + case SAFI_EVPN: + case SAFI_MAX: return "unknown-afi/safi"; } break; @@ -561,15 +573,24 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi) switch (safi) { case SAFI_EVPN: return "l2vpn-evpn"; - default: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_MPLS_VPN: + case SAFI_ENCAP: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_UNSPEC: + case SAFI_MAX: return "unknown-afi/safi"; } + break; case AFI_UNSPEC: case AFI_MAX: return "unknown-afi/safi"; } /* all AFIs are accounted for above, so this shouldn't happen */ - return "unknown-afi/safi"; + + assert(!"Reached end of function where we did not expect to"); } int bgp_get_vty(struct bgp **bgp, as_t *as, const char *name, diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 4c4c81f997..61119ab6e0 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -2421,7 +2421,9 @@ static inline int afindex(afi_t afi, safi_t safi) return BGP_AF_IPV4_ENCAP; case SAFI_FLOWSPEC: return BGP_AF_IPV4_FLOWSPEC; - default: + case SAFI_EVPN: + case SAFI_UNSPEC: + case SAFI_MAX: return BGP_AF_MAX; } break; @@ -2439,7 +2441,9 @@ static inline int afindex(afi_t afi, safi_t safi) return BGP_AF_IPV6_ENCAP; case SAFI_FLOWSPEC: return BGP_AF_IPV6_FLOWSPEC; - default: + case SAFI_EVPN: + case SAFI_UNSPEC: + case SAFI_MAX: return BGP_AF_MAX; } break; @@ -2447,12 +2451,23 @@ static inline int afindex(afi_t afi, safi_t safi) switch (safi) { case SAFI_EVPN: return BGP_AF_L2VPN_EVPN; - default: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_LABELED_UNICAST: + case SAFI_MPLS_VPN: + case SAFI_ENCAP: + case SAFI_FLOWSPEC: + case SAFI_UNSPEC: + case SAFI_MAX: return BGP_AF_MAX; } - default: + break; + case AFI_UNSPEC: + case AFI_MAX: return BGP_AF_MAX; } + + assert(!"Reached end of function we should never hit"); } /* If the peer is not a peer-group but is bound to a peer-group return 1 */ diff --git a/bgpd/rfapi/rfapi_encap_tlv.c b/bgpd/rfapi/rfapi_encap_tlv.c index d4e875df2a..dc0c382dc1 100644 --- a/bgpd/rfapi/rfapi_encap_tlv.c +++ b/bgpd/rfapi/rfapi_encap_tlv.c @@ -150,8 +150,8 @@ rfapi_tunneltype_option_to_tlv(struct bgp *bgp, struct rfapi_ip_addr *ea, bgp_encap_type_pbb_to_tlv(&tto->bgpinfo.pbb, attr); break; - default: - assert(0); + case BGP_ENCAP_TYPE_RESERVED: + assert(!"Cannot process BGP_ENCAP_TYPE_RESERVED"); } return tto->type; } @@ -737,7 +737,7 @@ void rfapi_print_tunneltype_option(void *stream, int column_offset, print_encap_type_pbb(stream, column_offset, &tto->bgpinfo.pbb); break; - default: - assert(0); + case BGP_ENCAP_TYPE_RESERVED: + assert(!"Cannot process BGP_ENCAP_TYPE_RESERVED"); } } diff --git a/bgpd/rfapi/rfapi_import.c b/bgpd/rfapi/rfapi_import.c index 2aae0bc616..5db40be362 100644 --- a/bgpd/rfapi/rfapi_import.c +++ b/bgpd/rfapi/rfapi_import.c @@ -260,8 +260,14 @@ void rfapiCheckRefcount(struct agg_node *rn, safi_t safi, int lockoffset) } break; - default: - assert(0); + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_EVPN: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: + assert(!"Passed in safi should be impossible"); } } @@ -2967,7 +2973,9 @@ static void rfapiBgpInfoFilteredImportEncap( rt = import_table->imported_encap[afi]; break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: flog_err(EC_LIB_DEVELOPMENT, "%s: bad afi %d", __func__, afi); return; } @@ -3416,7 +3424,8 @@ void rfapiBgpInfoFilteredImportVPN( rt = import_table->imported_vpn[afi]; break; - default: + case AFI_UNSPEC: + case AFI_MAX: flog_err(EC_LIB_DEVELOPMENT, "%s: bad afi %d", __func__, afi); return; } @@ -3808,11 +3817,19 @@ rfapiBgpInfoFilteredImportFunction(safi_t safi) case SAFI_ENCAP: return rfapiBgpInfoFilteredImportEncap; - default: + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_EVPN: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: /* not expected */ flog_err(EC_LIB_DEVELOPMENT, "%s: bad safi %d", __func__, safi); return rfapiBgpInfoFilteredImportBadSafi; } + + assert(!"Reached end of function when we were not expecting to"); } void rfapiProcessUpdate(struct peer *peer, @@ -4028,8 +4045,8 @@ static void rfapiProcessPeerDownRt(struct peer *peer, { struct agg_node *rn; struct bgp_path_info *bpi; - struct agg_table *rt; - void (*timer_service_func)(struct thread *); + struct agg_table *rt = NULL; + void (*timer_service_func)(struct thread *) = NULL; assert(afi == AFI_IP || afi == AFI_IP6); @@ -4044,14 +4061,19 @@ static void rfapiProcessPeerDownRt(struct peer *peer, rt = import_table->imported_encap[afi]; timer_service_func = rfapiWithdrawTimerEncap; break; - default: + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_EVPN: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: /* Suppress uninitialized variable warning */ rt = NULL; timer_service_func = NULL; assert(0); } - for (rn = agg_route_top(rt); rn; rn = agg_route_next(rn)) { for (bpi = rn->info; bpi; bpi = bpi->next) { if (bpi->peer == peer) { diff --git a/bgpd/rfapi/rfapi_monitor.c b/bgpd/rfapi/rfapi_monitor.c index 0e71d5d7e1..f333e8cc55 100644 --- a/bgpd/rfapi/rfapi_monitor.c +++ b/bgpd/rfapi/rfapi_monitor.c @@ -244,7 +244,13 @@ void rfapiMonitorExtraFlush(safi_t safi, struct agg_node *rn) } break; - default: + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_EVPN: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: assert(0); } XFREE(MTYPE_RFAPI_IT_EXTRA, hie); @@ -306,7 +312,13 @@ void rfapiMonitorExtraPrune(safi_t safi, struct agg_node *rn) } break; - default: + case SAFI_UNSPEC: + case SAFI_UNICAST: + case SAFI_MULTICAST: + case SAFI_EVPN: + case SAFI_LABELED_UNICAST: + case SAFI_FLOWSPEC: + case SAFI_MAX: assert(0); } XFREE(MTYPE_RFAPI_IT_EXTRA, hie); diff --git a/bgpd/rfapi/rfapi_vty.c b/bgpd/rfapi/rfapi_vty.c index d04d1ee750..e04938fde3 100644 --- a/bgpd/rfapi/rfapi_vty.c +++ b/bgpd/rfapi/rfapi_vty.c @@ -1863,7 +1863,7 @@ void rfapiPrintNhl(void *stream, struct rfapi_next_hop_entry *next_hops) vo->v.local_nexthop.cost, HVTYNL); break; - default: + case RFAPI_VN_OPTION_TYPE_INTERNAL_RD: fp(out, "%svn option type %d (unknown)%s", offset, vo->type, HVTYNL); @@ -1881,7 +1881,7 @@ void rfapiPrintNhl(void *stream, struct rfapi_next_hop_entry *next_hops) rfapi_print_tunneltype_option( stream, 8, &uo->v.tunnel); break; - default: + case RFAPI_UN_OPTION_TYPE_PROVISIONAL: fp(out, "%sUN Option type %d%s", offset, uo->type, vty_newline); break; @@ -4175,7 +4175,8 @@ static int rfapi_vty_show_nve_summary(struct vty *vty, case SHOW_NVE_SUMMARY_RESPONSES: rfapiRibShowResponsesSummary(vty); - default: + case SHOW_NVE_SUMMARY_UNKNOWN_NVES: + case SHOW_NVE_SUMMARY_MAX: break; } vty_out(vty, "\n"); diff --git a/configure.ac b/configure.ac index 08b64cfa9f..495c89c0d6 100644 --- a/configure.ac +++ b/configure.ac @@ -351,6 +351,7 @@ AC_C_FLAG([-Wall]) AC_C_FLAG([-Wextra]) AC_C_FLAG([-Wformat-nonliteral]) AC_C_FLAG([-Wformat-security]) +AC_C_FLAG([-Wswitch-enum]) AC_C_FLAG([-Wstrict-prototypes]) AC_C_FLAG([-Wmissing-prototypes]) AC_C_FLAG([-Wmissing-declarations]) diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index 0957c897e6..a887897403 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -484,9 +484,11 @@ const char *isis_adj_yang_state(enum isis_adj_state state) return "up"; case ISIS_ADJ_INITIALIZING: return "init"; - default: + case ISIS_ADJ_UNKNOWN: return "failed"; } + + assert(!"Reached end of function where we are not expecting to"); } void isis_adj_expire(struct thread *thread) @@ -954,8 +956,9 @@ int isis_adj_usage2levels(enum isis_adj_usage usage) return IS_LEVEL_2; case ISIS_ADJ_LEVEL1AND2: return IS_LEVEL_1 | IS_LEVEL_2; - default: - break; + case ISIS_ADJ_NONE: + return 0; } - return 0; + + assert(!"Reached end of function where we are not expecting to"); } diff --git a/isisd/isis_pdu_counter.c b/isisd/isis_pdu_counter.c index ec2a0c2076..bc1a57ccff 100644 --- a/isisd/isis_pdu_counter.c +++ b/isisd/isis_pdu_counter.c @@ -77,9 +77,11 @@ static const char *pdu_counter_index_to_name(enum pdu_counter_index index) return "L1 PSNP"; case L2_PARTIAL_SEQ_NUM_INDEX: return "L2 PSNP"; - default: + case PDU_COUNTER_SIZE: return "???????"; } + + assert(!"Reached end of function where we were not expecting to"); } void pdu_counter_count(pdu_counter_t counter, uint8_t pdu_type) diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index a6eef75e7e..22625ed247 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -1587,8 +1587,8 @@ static void spf_path_process(struct isis_spftree *spftree, vertex->N.ip.priority = priority; if (vertex->depth == 1 || listcount(vertex->Adj_N) > 0) { struct isis_spftree *pre_spftree; - struct route_table *route_table; - bool allow_ecmp; + struct route_table *route_table = NULL; + bool allow_ecmp = false; switch (spftree->type) { case SPF_TYPE_RLFA: @@ -1606,7 +1606,8 @@ static void spf_path_process(struct isis_spftree *spftree, return; } break; - default: + case SPF_TYPE_FORWARD: + case SPF_TYPE_REVERSE: break; } @@ -1624,7 +1625,8 @@ static void spf_path_process(struct isis_spftree *spftree, pre_spftree->lfa.protection_counters .tilfa[vertex->N.ip.priority] += 1; break; - default: + case SPF_TYPE_FORWARD: + case SPF_TYPE_REVERSE: route_table = spftree->route_table; allow_ecmp = true; @@ -1699,7 +1701,14 @@ static void isis_spf_loop(struct isis_spftree *spftree, VTYPE_IPREACH_TE)) continue; break; - default: + case VTYPE_PSEUDO_IS: + case VTYPE_PSEUDO_TE_IS: + case VTYPE_NONPSEUDO_IS: + case VTYPE_NONPSEUDO_TE_IS: + case VTYPE_ES: + case VTYPE_IPREACH_TE: + case VTYPE_IP6REACH_INTERNAL: + case VTYPE_IP6REACH_EXTERNAL: break; } diff --git a/isisd/isis_te.c b/isisd/isis_te.c index 155d1e6fed..ed915c4561 100644 --- a/isisd/isis_te.c +++ b/isisd/isis_te.c @@ -1344,7 +1344,8 @@ void isis_te_lsp_event(struct isis_lsp *lsp, enum lsp_event event) case LSP_DEL: isis_te_delete_lsp(area->mta, lsp0); break; - default: + case LSP_UNKNOWN: + case LSP_TICK: break; } } diff --git a/isisd/isisd.c b/isisd/isisd.c index cd08525471..7e40c21a0d 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -2340,9 +2340,11 @@ static const char *pdu_counter_index_to_name_json(enum pdu_counter_index index) return "l1-psnp"; case L2_PARTIAL_SEQ_NUM_INDEX: return "l2-psnp"; - default: + case PDU_COUNTER_SIZE: return "???????"; } + + assert(!"Reached end of function where we are not expecting to"); } static void common_isis_summary_json(struct json_object *json, diff --git a/ldpd/lde.c b/ldpd/lde.c index efc07b4547..66398ae41d 100644 --- a/ldpd/lde.c +++ b/ldpd/lde.c @@ -760,7 +760,7 @@ lde_update_label(struct fec_node *fn) fn->fec.u.ipv6.prefixlen) != FILTER_PERMIT) return (NO_LABEL); break; - default: + case FEC_TYPE_PWID: break; } @@ -790,7 +790,7 @@ lde_update_label(struct fec_node *fn) fn->fec.u.ipv6.prefixlen) != FILTER_PERMIT) return (MPLS_LABEL_IMPLICIT_NULL); return MPLS_LABEL_IPV6_EXPLICIT_NULL; - default: + case FEC_TYPE_PWID: break; } } @@ -929,7 +929,7 @@ lde_fec2prefix(const struct fec *fec, struct prefix *prefix) prefix->u.prefix6 = fec->u.ipv6.prefix; prefix->prefixlen = fec->u.ipv6.prefixlen; break; - default: + case FEC_TYPE_PWID: prefix->family = AF_UNSPEC; break; } @@ -1314,7 +1314,7 @@ lde_send_labelrequest(struct lde_nbr *ln, struct fec_node *fn, if (!ln->v6_enabled) return; break; - default: + case FEC_TYPE_PWID: fatalx("lde_send_labelrequest: unknown af"); } } else @@ -1595,7 +1595,7 @@ lde_nbr_addr_update(struct lde_nbr *ln, struct lde_addr *lde_addr, int removed) if (lde_addr->af != AF_INET6) continue; break; - default: + case FEC_TYPE_PWID: continue; } diff --git a/ldpd/lde_lib.c b/ldpd/lde_lib.c index 4366560546..5d173c40c1 100644 --- a/ldpd/lde_lib.c +++ b/ldpd/lde_lib.c @@ -178,7 +178,7 @@ rt_dump(pid_t pid) rtctl.prefix.v6 = fn->fec.u.ipv6.prefix; rtctl.prefixlen = fn->fec.u.ipv6.prefixlen; break; - default: + case FEC_TYPE_PWID: continue; } @@ -505,7 +505,7 @@ lde_check_mapping(struct map *map, struct lde_nbr *ln, int rcvd_label_mapping) fec.u.ipv6.prefixlen) != FILTER_PERMIT) return; break; - default: + case FEC_TYPE_PWID: break; } @@ -665,7 +665,7 @@ lde_check_request(struct map *map, struct lde_nbr *ln) lde_send_notification(ln, S_LOOP_DETECTED, map->msg_id, htons(MSG_TYPE_LABELREQUEST)); return; - default: + case FEC_TYPE_PWID: break; } } diff --git a/ldpd/ldp_zebra.c b/ldpd/ldp_zebra.c index 059115915a..833545cf57 100644 --- a/ldpd/ldp_zebra.c +++ b/ldpd/ldp_zebra.c @@ -597,7 +597,7 @@ ldp_zebra_read_route(ZAPI_CALLBACK_ARGS) if (!(kr.flags & F_CONNECTED)) continue; break; - default: + case NEXTHOP_TYPE_BLACKHOLE: continue; } diff --git a/ldpd/pfkey.c b/ldpd/pfkey.c index a719d0cbb7..3bd3cc7299 100644 --- a/ldpd/pfkey.c +++ b/ldpd/pfkey.c @@ -421,35 +421,33 @@ pfkey_md5sig_remove(struct nbr *nbr) int pfkey_establish(struct nbr *nbr, struct nbr_params *nbrp) { - if (nbrp->auth.method == AUTH_NONE) - return (0); - switch (nbr->auth.method) { case AUTH_MD5SIG: strlcpy(nbr->auth.md5key, nbrp->auth.md5key, sizeof(nbr->auth.md5key)); - return (pfkey_md5sig_establish(nbr, nbrp)); - default: - break; + return pfkey_md5sig_establish(nbr, nbrp); + case AUTH_NONE: + return 0; } - return (0); + assert(!"Reached end of function where we are not expecting to"); } int pfkey_remove(struct nbr *nbr) { - if (nbr->auth.method == AUTH_NONE || !nbr->auth.established) - return (0); + if (!nbr->auth.established) + return 0; switch (nbr->auth.method) { case AUTH_MD5SIG: - return (pfkey_md5sig_remove(nbr)); - default: + return pfkey_md5sig_remove(nbr); + case AUTH_NONE: + return 0; break; } - return (0); + assert(!"Reached end of function where we are not expecting to"); } int diff --git a/lib/command.c b/lib/command.c index 6d023142ab..4e8194bbc6 100644 --- a/lib/command.c +++ b/lib/command.c @@ -949,7 +949,8 @@ static int cmd_execute_command_real(vector vline, enum cmd_filter_type filter, return CMD_ERR_INCOMPLETE; case MATCHER_AMBIGUOUS: return CMD_ERR_AMBIGUOUS; - default: + case MATCHER_NO_MATCH: + case MATCHER_OK: return CMD_ERR_NO_MATCH; } } diff --git a/lib/command_graph.c b/lib/command_graph.c index e940685250..766d7e9371 100644 --- a/lib/command_graph.c +++ b/lib/command_graph.c @@ -267,9 +267,22 @@ static bool cmd_nodes_equal(struct graph_node *ga, struct graph_node *gb) return false; return cmd_subgraph_equal(ga, gb, a->forkjoin); - default: + case VARIABLE_TKN: + case IPV4_TKN: + case IPV4_PREFIX_TKN: + case IPV6_PREFIX_TKN: + case IPV6_TKN: + case MAC_TKN: + case MAC_PREFIX_TKN: + case JOIN_TKN: + case START_TKN: + case END_TKN: + case NEG_ONLY_TKN: + case WORD_TKN: return true; } + + assert(!"Reached end of function we should never hit"); } static void cmd_fork_bump_attr(struct graph_node *gn, struct graph_node *join, @@ -477,7 +490,7 @@ void cmd_graph_node_print_cb(struct graph_node *gn, struct buffer *buf) char nbuf[512]; struct cmd_token *tok = gn->data; - const char *color; + const char *color = NULL; if (wasend) { wasend = false; @@ -526,10 +539,23 @@ void cmd_graph_node_print_cb(struct graph_node *gn, struct buffer *buf) case WORD_TKN: color = "#ffffff"; break; - default: + case RANGE_TKN: + case IPV4_TKN: + case IPV4_PREFIX_TKN: + case IPV6_TKN: + case IPV6_PREFIX_TKN: + case MAC_TKN: + case MAC_PREFIX_TKN: + case END_TKN: + case VARIABLE_TKN: color = "#ffffff"; break; } + + /* + * Some compilers have the mistaken belief that we can + * get here without initializing color. + */ snprintf(nbuf, sizeof(nbuf), ">, style = filled, fillcolor = \"%s\" ];\n", color); buffer_putstr(buf, nbuf); diff --git a/lib/command_match.c b/lib/command_match.c index ce2dbc9528..6c1d05d926 100644 --- a/lib/command_match.c +++ b/lib/command_match.c @@ -437,7 +437,7 @@ enum matcher_rv command_complete(struct graph *graph, vector vline, add_nexthops(next, gstack[0], gstack, idx + 1, neg); break; - default: + case no_match: trace_matcher("no_match\n"); break; } @@ -544,9 +544,22 @@ static enum match_type min_match_level(enum cmd_token_type type) // allowing words to partly match enables command abbreviation case WORD_TKN: return partly_match; - default: + case RANGE_TKN: + case IPV4_TKN: + case IPV4_PREFIX_TKN: + case IPV6_TKN: + case IPV6_PREFIX_TKN: + case MAC_TKN: + case MAC_PREFIX_TKN: + case FORK_TKN: + case JOIN_TKN: + case END_TKN: + case NEG_ONLY_TKN: + case VARIABLE_TKN: return exact_match; } + + assert(!"Reached end of function we should never hit"); } /** @@ -572,9 +585,15 @@ static int score_precedence(enum cmd_token_type type) return 3; case VARIABLE_TKN: return 4; - default: + case JOIN_TKN: + case START_TKN: + case END_TKN: + case NEG_ONLY_TKN: + case SPECIAL_TKN: return 10; } + + assert(!"Reached end of function we should never hit"); } /** @@ -695,9 +714,14 @@ static enum match_type match_token(struct cmd_token *token, char *input_token) case MAC_PREFIX_TKN: return match_mac(input_token, true); case END_TKN: - default: + case FORK_TKN: + case JOIN_TKN: + case START_TKN: + case NEG_ONLY_TKN: return no_match; } + + assert(!"Reached end of function we should never hit"); } #define IPV4_ADDR_STR "0123456789." diff --git a/lib/grammar_sandbox.c b/lib/grammar_sandbox.c index 8fa47c053b..a62178ba0a 100644 --- a/lib/grammar_sandbox.c +++ b/lib/grammar_sandbox.c @@ -195,7 +195,7 @@ DEFUN (grammar_test_match, case MATCHER_AMBIGUOUS: vty_out(vty, "%% Ambiguous command\n"); break; - default: + case MATCHER_OK: vty_out(vty, "%% Unknown error\n"); break; } diff --git a/lib/iana_afi.h b/lib/iana_afi.h index 56e8a24b86..41e83d45c8 100644 --- a/lib/iana_afi.h +++ b/lib/iana_afi.h @@ -61,9 +61,11 @@ static inline afi_t afi_iana2int(iana_afi_t afi) return AFI_IP6; case IANA_AFI_L2VPN: return AFI_L2VPN; - default: + case IANA_AFI_RESERVED: return AFI_MAX; } + + return AFI_MAX; } static inline iana_afi_t afi_int2iana(afi_t afi) @@ -75,9 +77,12 @@ static inline iana_afi_t afi_int2iana(afi_t afi) return IANA_AFI_IPV6; case AFI_L2VPN: return IANA_AFI_L2VPN; - default: + case AFI_UNSPEC: + case AFI_MAX: return IANA_AFI_RESERVED; } + + return IANA_AFI_RESERVED; } static inline const char *iana_afi2str(iana_afi_t afi) @@ -102,9 +107,11 @@ static inline safi_t safi_iana2int(iana_safi_t safi) return SAFI_LABELED_UNICAST; case IANA_SAFI_FLOWSPEC: return SAFI_FLOWSPEC; - default: + case IANA_SAFI_RESERVED: return SAFI_MAX; } + + return SAFI_MAX; } static inline iana_safi_t safi_int2iana(safi_t safi) @@ -124,9 +131,12 @@ static inline iana_safi_t safi_int2iana(safi_t safi) return IANA_SAFI_LABELED_UNICAST; case SAFI_FLOWSPEC: return IANA_SAFI_FLOWSPEC; - default: + case SAFI_UNSPEC: + case SAFI_MAX: return IANA_SAFI_RESERVED; } + + return IANA_SAFI_RESERVED; } static inline const char *iana_safi2str(iana_safi_t safi) diff --git a/lib/ipaddr.h b/lib/ipaddr.h index 43b3028200..4934a83b4c 100644 --- a/lib/ipaddr.h +++ b/lib/ipaddr.h @@ -70,9 +70,11 @@ static inline int ipaddr_family(const struct ipaddr *ip) return AF_INET; case IPADDR_V6: return AF_INET6; - default: + case IPADDR_NONE: return AF_UNSPEC; } + + assert(!"Reached end of function where we should never hit"); } static inline int str2ipaddr(const char *str, struct ipaddr *ip) @@ -158,9 +160,11 @@ static inline int ipaddr_cmp(const struct ipaddr *a, const struct ipaddr *b) case IPADDR_V6: return memcmp((void *)&a->ipaddr_v6, (void *)&b->ipaddr_v6, sizeof(a->ipaddr_v6)); - default: + case IPADDR_NONE: return 0; } + + assert(!"Reached end of function we should never hit"); } static inline bool ipaddr_is_zero(const struct ipaddr *ip) diff --git a/lib/link_state.c b/lib/link_state.c index 1b79c79216..c59cd040c8 100644 --- a/lib/link_state.c +++ b/lib/link_state.c @@ -443,7 +443,7 @@ struct ls_vertex *ls_vertex_add(struct ls_ted *ted, struct ls_node *node) case ISIS_L2: key = sysid_to_key(node->adv.id.iso.sys_id); break; - default: + case UNKNOWN: key = 0; break; } @@ -565,7 +565,7 @@ struct ls_vertex *ls_find_vertex_by_id(struct ls_ted *ted, case ISIS_L2: vertex.key = sysid_to_key(nid.id.iso.sys_id); break; - default: + case UNKNOWN: return NULL; } @@ -1649,7 +1649,8 @@ struct ls_message *ls_vertex2msg(struct ls_message *msg, case SYNC: msg->event = LS_MSG_EVENT_SYNC; break; - default: + case UNSET: + case ORPHAN: msg->event = LS_MSG_EVENT_UNDEF; break; } @@ -1681,7 +1682,8 @@ struct ls_message *ls_edge2msg(struct ls_message *msg, struct ls_edge *edge) case SYNC: msg->event = LS_MSG_EVENT_SYNC; break; - default: + case UNSET: + case ORPHAN: msg->event = LS_MSG_EVENT_UNDEF; break; } @@ -1717,7 +1719,8 @@ struct ls_message *ls_subnet2msg(struct ls_message *msg, case SYNC: msg->event = LS_MSG_EVENT_SYNC; break; - default: + case UNSET: + case ORPHAN: msg->event = LS_MSG_EVENT_UNDEF; break; } diff --git a/lib/mlag.c b/lib/mlag.c index 653fbe8fe9..9f346d77bf 100644 --- a/lib/mlag.c +++ b/lib/mlag.c @@ -73,7 +73,10 @@ char *mlag_lib_msgid_to_str(enum mlag_msg_type msg_type, char *buf, size_t size) case MLAG_PEER_FRR_STATUS: snprintf(buf, size, "Mlag Peer FRR Status"); break; - default: + case MLAG_PIM_CFG_DUMP: + snprintf(buf, size, "Mlag Pim Configuration Dump"); + break; + case MLAG_MSG_NONE: snprintf(buf, size, "Unknown %d", msg_type); break; } diff --git a/lib/northbound.c b/lib/northbound.c index ccfc3840ec..6a014f37ba 100644 --- a/lib/northbound.c +++ b/lib/northbound.c @@ -731,7 +731,13 @@ int nb_candidate_edit(struct nb_config *candidate, case NB_OP_MOVE: /* TODO: update configuration. */ break; - default: + case NB_OP_PRE_VALIDATE: + case NB_OP_APPLY_FINISH: + case NB_OP_GET_ELEM: + case NB_OP_GET_NEXT: + case NB_OP_GET_KEYS: + case NB_OP_LOOKUP_ENTRY: + case NB_OP_RPC: flog_warn(EC_LIB_DEVELOPMENT, "%s: unknown operation (%u) [xpath %s]", __func__, operation, xpath_edit); @@ -1360,7 +1366,13 @@ static int nb_callback_configuration(struct nb_context *context, ret = nb_callback_move(context, nb_node, event, dnode, errmsg, errmsg_len); break; - default: + case NB_OP_PRE_VALIDATE: + case NB_OP_APPLY_FINISH: + case NB_OP_GET_ELEM: + case NB_OP_GET_NEXT: + case NB_OP_GET_KEYS: + case NB_OP_LOOKUP_ENTRY: + case NB_OP_RPC: yang_dnode_get_path(dnode, xpath, sizeof(xpath)); flog_err(EC_LIB_DEVELOPMENT, "%s: unknown operation (%u) [xpath %s]", __func__, @@ -1489,7 +1501,7 @@ static int nb_transaction_process(enum nb_event event, * 'prepare' phase. */ break; - default: + case NB_EV_VALIDATE: break; } } @@ -2319,9 +2331,9 @@ const char *nb_event_name(enum nb_event event) return "abort"; case NB_EV_APPLY: return "apply"; - default: - return "unknown"; } + + assert(!"Reached end of function we should never hit"); } const char *nb_operation_name(enum nb_operation operation) @@ -2349,9 +2361,9 @@ const char *nb_operation_name(enum nb_operation operation) return "lookup_entry"; case NB_OP_RPC: return "rpc"; - default: - return "unknown"; } + + assert(!"Reached end of function we should never hit"); } const char *nb_err_name(enum nb_error error) @@ -2373,9 +2385,9 @@ const char *nb_err_name(enum nb_error error) return "failed to allocate resource"; case NB_ERR_INCONSISTENCY: return "internal inconsistency"; - default: - return "unknown"; } + + assert(!"Reached end of function we should never hit"); } const char *nb_client_name(enum nb_client client) @@ -2389,9 +2401,13 @@ const char *nb_client_name(enum nb_client client) return "Sysrepo"; case NB_CLIENT_GRPC: return "gRPC"; - default: - return "unknown"; + case NB_CLIENT_PCEP: + return "Pcep"; + case NB_CLIENT_NONE: + return "None"; } + + assert(!"Reached end of function we should never hit"); } static void nb_load_callbacks(const struct frr_yang_module_info *module) diff --git a/lib/prefix.c b/lib/prefix.c index 1d098f78c5..9d6dc73572 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -148,11 +148,11 @@ const char *afi2str(afi_t afi) case AFI_L2VPN: return "l2vpn"; case AFI_MAX: + case AFI_UNSPEC: return "bad-value"; - default: - break; } - return NULL; + + assert(!"Reached end of function we should never reach"); } const char *safi2str(safi_t safi) @@ -172,9 +172,12 @@ const char *safi2str(safi_t safi) return "labeled-unicast"; case SAFI_FLOWSPEC: return "flowspec"; - default: + case SAFI_UNSPEC: + case SAFI_MAX: return "unknown"; } + + assert(!"Reached end of function we should never reach"); } /* If n includes p prefix then return 1 else return 0. */ @@ -1507,7 +1510,7 @@ static ssize_t printfrr_ia(struct fbuf *buf, struct printfrr_eargs *ea, return bputch(buf, '*'); break; - default: + case IPADDR_NONE: break; } } diff --git a/lib/routemap.c b/lib/routemap.c index 44d7185567..f56e6a6122 100644 --- a/lib/routemap.c +++ b/lib/routemap.c @@ -1754,7 +1754,8 @@ route_map_apply_match(struct route_map_rule_list *match_list, ret = RMAP_MATCH; break; - default: + case RMAP_OKAY: + case RMAP_ERROR: break; } diff --git a/lib/stream.c b/lib/stream.c index 2de3abdf45..0756f90274 100644 --- a/lib/stream.c +++ b/lib/stream.c @@ -635,7 +635,7 @@ uint32_t stream_get_ipv4(struct stream *s) bool stream_get_ipaddr(struct stream *s, struct ipaddr *ip) { - uint16_t ipa_len; + uint16_t ipa_len = 0; STREAM_VERIFY_SANE(s); @@ -654,7 +654,7 @@ bool stream_get_ipaddr(struct stream *s, struct ipaddr *ip) case IPADDR_V6: ipa_len = IPV6_MAX_BYTELEN; break; - default: + case IPADDR_NONE: flog_err(EC_LIB_DEVELOPMENT, "%s: unknown ip address-family: %u", __func__, ip->ipa_type); @@ -947,7 +947,7 @@ bool stream_put_ipaddr(struct stream *s, struct ipaddr *ip) case IPADDR_V6: stream_write(s, (uint8_t *)&ip->ipaddr_v6, 16); break; - default: + case IPADDR_NONE: flog_err(EC_LIB_DEVELOPMENT, "%s: unknown ip address-family: %u", __func__, ip->ipa_type); diff --git a/lib/vrf.c b/lib/vrf.c index 7d2ca6f1e1..baf25dfa0e 100644 --- a/lib/vrf.c +++ b/lib/vrf.c @@ -610,7 +610,7 @@ int vrf_configure_backend(enum vrf_backend_type backend) case VRF_BACKEND_NETNS: case VRF_BACKEND_VRF_LITE: break; - default: + case VRF_BACKEND_MAX: return -1; } diff --git a/lib/vty.c b/lib/vty.c index 2a0bb9446a..1b6886ca1d 100644 --- a/lib/vty.c +++ b/lib/vty.c @@ -2727,7 +2727,11 @@ static void vty_event_serv(enum vty_event event, struct vty_serv *vty_serv) vty_serv->sock, &vty_serv->t_accept); break; #endif /* VTYSH */ - default: + case VTY_READ: + case VTY_WRITE: + case VTY_TIMEOUT_RESET: + case VTYSH_READ: + case VTYSH_WRITE: assert(!"vty_event_serv() called incorrectly"); } } @@ -2766,7 +2770,8 @@ static void vty_event(enum vty_event event, struct vty *vty) thread_add_timer(vty_master, vty_timeout, vty, vty->v_timeout, &vty->t_timeout); break; - default: + case VTY_SERV: + case VTYSH_SERV: assert(!"vty_event() called incorrectly"); } } diff --git a/lib/zclient.c b/lib/zclient.c index 07c7e5aea8..d748bef335 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -1682,7 +1682,8 @@ int zapi_tc_class_encode(uint8_t cmd, struct stream *s, struct tc_class *class) stream_putq(s, class->u.htb.rate); stream_putq(s, class->u.htb.ceil); break; - default: + case TC_QDISC_UNSPEC: + case TC_QDISC_NOQUEUE: /* not implemented */ break; } @@ -1730,7 +1731,10 @@ int zapi_tc_filter_encode(uint8_t cmd, struct stream *s, } stream_putl(s, filter->u.flower.classid); break; - default: + case TC_FILTER_UNSPEC: + case TC_FILTER_BPF: + case TC_FILTER_FLOW: + case TC_FILTER_U32: /* not implemented */ break; } diff --git a/lib/zlog_5424_cli.c b/lib/zlog_5424_cli.c index 5eebda9deb..be0988e0b3 100644 --- a/lib/zlog_5424_cli.c +++ b/lib/zlog_5424_cli.c @@ -877,7 +877,8 @@ static int log_5424_show(struct vty *vty) } break; - default: + case ZLOG_FMT_3164: + case ZLOG_FMT_LOCAL: vty_out(vty, " structured data is not supported by the selected format\n"); break; diff --git a/nhrpd/nhrp_cache.c b/nhrpd/nhrp_cache.c index 81d9bb255f..a1b22645c0 100644 --- a/nhrpd/nhrp_cache.c +++ b/nhrpd/nhrp_cache.c @@ -330,7 +330,14 @@ static void nhrp_cache_update_timers(struct nhrp_cache *c) thread_add_timer_msec(master, nhrp_cache_do_free, c, 10, &c->t_timeout); break; - default: + case NHRP_CACHE_INCOMPLETE: + case NHRP_CACHE_NEGATIVE: + case NHRP_CACHE_CACHED: + case NHRP_CACHE_DYNAMIC: + case NHRP_CACHE_NHS: + case NHRP_CACHE_STATIC: + case NHRP_CACHE_LOCAL: + case NHRP_CACHE_NUM_TYPES: if (c->cur.expires) thread_add_timer(master, nhrp_cache_do_timeout, c, c->cur.expires - monotime(NULL), diff --git a/nhrpd/nhrp_interface.c b/nhrpd/nhrp_interface.c index 4ac30a7d75..104c81bde4 100644 --- a/nhrpd/nhrp_interface.c +++ b/nhrpd/nhrp_interface.c @@ -184,16 +184,17 @@ void nhrp_interface_update_nbma(struct interface *ifp, struct nhrp_interface *nifp = ifp->info, *nbmanifp = NULL; struct interface *nbmaifp = NULL; union sockunion nbma; + struct in_addr saddr = {0}; sockunion_family(&nbma) = AF_UNSPEC; if (nifp->source) nbmaifp = if_lookup_by_name(nifp->source, nifp->link_vrf_id); - switch (ifp->ll_type) { - case ZEBRA_LLT_IPGRE: { - struct in_addr saddr = {0}; - + if (ifp->ll_type != ZEBRA_LLT_IPGRE) + debugf(NHRP_DEBUG_IF, "%s: Ignoring non GRE interface type %u", + __func__, ifp->ll_type); + else { if (!gre_info) { nhrp_send_zebra_gre_request(ifp); return; @@ -214,9 +215,6 @@ void nhrp_interface_update_nbma(struct interface *ifp, nbmaifp = if_lookup_by_index(nifp->link_idx, nifp->link_vrf_id); - } break; - default: - break; } if (nbmaifp) diff --git a/nhrpd/nhrp_route.c b/nhrpd/nhrp_route.c index 698c6d0cdf..aa0bbbc4cc 100644 --- a/nhrpd/nhrp_route.c +++ b/nhrpd/nhrp_route.c @@ -139,7 +139,17 @@ void nhrp_route_announce(int add, enum nhrp_cache_type type, /* Regular route, so these are announced * to other routing daemons */ break; - default: + case NHRP_CACHE_INVALID: + case NHRP_CACHE_INCOMPLETE: + /* + * I cannot believe that we want to set a FIB_OVERRIDE + * for invalid state or incomplete. But this matches + * the original code. Someone will probably notice + * the problem eventually + */ + case NHRP_CACHE_CACHED: + case NHRP_CACHE_LOCAL: + case NHRP_CACHE_NUM_TYPES: SET_FLAG(api.flags, ZEBRA_FLAG_FIB_OVERRIDE); break; } diff --git a/nhrpd/vici.c b/nhrpd/vici.c index 6ba2399e05..a54b43908b 100644 --- a/nhrpd/vici.c +++ b/nhrpd/vici.c @@ -135,11 +135,6 @@ static void vici_parse_message(struct vici_conn *vici, struct zbuf *msg, case VICI_LIST_END: debugf(NHRP_DEBUG_VICI, "VICI: List end"); break; - default: - debugf(NHRP_DEBUG_VICI, - "VICI: Unsupported message component type %d", - *type); - return; } } } @@ -207,7 +202,12 @@ static void parse_sa_message(struct vici_message_ctx *ctx, } } break; - default: + case VICI_START: + case VICI_KEY_VALUE: + case VICI_LIST_START: + case VICI_LIST_ITEM: + case VICI_LIST_END: + case VICI_END: if (!key || !key->ptr) break; @@ -286,7 +286,13 @@ static void parse_cmd_response(struct vici_message_ctx *ctx, && blob2buf(val, buf, sizeof(buf))) flog_err(EC_NHRP_SWAN, "VICI: strongSwan: %s", buf); break; - default: + case VICI_START: + case VICI_SECTION_START: + case VICI_SECTION_END: + case VICI_LIST_START: + case VICI_LIST_ITEM: + case VICI_LIST_END: + case VICI_END: break; } } diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c index 48499938ca..d5f957c28b 100644 --- a/ospfd/ospf_spf.c +++ b/ospfd/ospf_spf.c @@ -539,7 +539,7 @@ void ospf_spf_remove_resource(struct vertex *vertex, struct list *vertex_list, vertex_list); break; - default: + case OSPF_TI_LFA_UNDEFINED_PROTECTION: /* do nothing */ break; } diff --git a/pathd/path_cli.c b/pathd/path_cli.c index b88453c68f..66680357da 100644 --- a/pathd/path_cli.c +++ b/pathd/path_cli.c @@ -1079,9 +1079,11 @@ static const char *objfun_type_name(enum objfun_type type) return "mss"; case OBJFUN_MSN: return "msn"; - default: + case OBJFUN_UNDEFINED: return NULL; } + + assert(!"Reached end of function we should never hit"); } DEFPY_NOSH(show_debugging_pathd, show_debugging_pathd_cmd, diff --git a/pathd/path_nb_config.c b/pathd/path_nb_config.c index e1fbb37f55..25d2ef47f4 100644 --- a/pathd/path_nb_config.c +++ b/pathd/path_nb_config.c @@ -239,7 +239,10 @@ void pathd_srte_segment_list_segment_nai_apply_finish( args->dnode, "./local-prefix-len"); local_prefix_len = atoi(local_prefix_len_buf); break; - default: + case SRTE_SEGMENT_NAI_TYPE_NONE: + case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES: + case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE: + case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM: break; } diff --git a/pathd/path_pcep.c b/pathd/path_pcep.c index ce631eb7b0..8a78259077 100644 --- a/pathd/path_pcep.c +++ b/pathd/path_pcep.c @@ -210,7 +210,7 @@ int pcep_main_event_handler(enum pcep_main_event_type type, int pcc_id, ret = pcep_main_event_remove_candidate_segments( (const char *)payload, true); break; - default: + case PCEP_MAIN_EVENT_UNDEFINED: flog_warn(EC_PATH_PCEP_RECOVERABLE_INTERNAL_ERROR, "Unexpected event received in the main thread: %u", type); diff --git a/pathd/path_pcep_config.c b/pathd/path_pcep_config.c index 873b0ccd37..e2feabb036 100644 --- a/pathd/path_pcep_config.c +++ b/pathd/path_pcep_config.c @@ -270,7 +270,8 @@ path_pcep_config_list_path_hops(struct srte_segment_list *segment_list) sizeof(struct ipaddr)); hop->nai.remote_iface = segment->nai_remote_iface; break; - default: + case SRTE_SEGMENT_NAI_TYPE_NONE: + case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES: break; } last_hop = hop; @@ -489,9 +490,12 @@ status_int_to_ext(enum srte_policy_status status) return PCEP_LSP_OPERATIONAL_GOING_UP; case SRTE_POLICY_STATUS_GOING_DOWN: return PCEP_LSP_OPERATIONAL_GOING_DOWN; - default: + case SRTE_POLICY_STATUS_DOWN: + case SRTE_POLICY_STATUS_UNKNOWN: return PCEP_LSP_OPERATIONAL_DOWN; } + + assert(!"Reached end of function where we are not expecting to"); } enum pcep_sr_subobj_nai pcep_nai_type(enum srte_segment_nai_type type) @@ -539,7 +543,10 @@ enum srte_segment_nai_type srte_nai_type(enum pcep_sr_subobj_nai type) return SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY; case PCEP_SR_SUBOBJ_NAI_UNNUMBERED_IPV4_ADJACENCY: return SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY; - default: + case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: return SRTE_SEGMENT_NAI_TYPE_NONE; } + + assert(!"Reached end of function where we were not expecting to"); } diff --git a/pathd/path_pcep_controller.c b/pathd/path_pcep_controller.c index b9f2ba3c63..380d1ab221 100644 --- a/pathd/path_pcep_controller.c +++ b/pathd/path_pcep_controller.c @@ -603,7 +603,9 @@ void pcep_thread_timer_handler(struct thread *thread) pcep_thread_remove_candidate_path_segments(ctrl_state, pcc_state); break; - default: + case TM_PCEPLIB_TIMER: + case TM_UNDEFINED: + case TM_MAX: flog_warn(EC_PATH_PCEP_RECOVERABLE_INTERNAL_ERROR, "Unknown controller timer triggered: %u", timer_type); break; @@ -823,7 +825,7 @@ void pcep_thread_event_handler(struct thread *thread) pcep_pcc_send_error(ctrl_state, pcc_state, error, (bool)sub_type); break; - default: + case EV_PCEPLIB_EVENT: flog_warn(EC_PATH_PCEP_RECOVERABLE_INTERNAL_ERROR, "Unexpected event received in controller thread: %u", type); @@ -1074,10 +1076,16 @@ const char *timer_type_name(enum pcep_ctrl_timer_type type) return "PCEPLIB_TIMER"; case TM_TIMEOUT: return "TIMEOUT"; - default: + case TM_CALCULATE_BEST_PCE: + return "BEST_PCE"; + case TM_SESSION_TIMEOUT_PCC: + return "TIMEOUT_PCC"; + case TM_MAX: return "UNKNOWN"; } -}; + + assert(!"Reached end of function where we did not expect to"); +} const char *timeout_type_name(enum pcep_ctrl_timeout_type type) { @@ -1086,7 +1094,9 @@ const char *timeout_type_name(enum pcep_ctrl_timeout_type type) return "UNDEFINED"; case TO_COMPUTATION_REQUEST: return "COMPUTATION_REQUEST"; - default: + case TO_MAX: return "UNKNOWN"; } + + assert(!"Reached end of function where we did not expect to"); } diff --git a/pathd/path_pcep_debug.c b/pathd/path_pcep_debug.c index b0802ae6c3..4ae587c912 100644 --- a/pathd/path_pcep_debug.c +++ b/pathd/path_pcep_debug.c @@ -90,9 +90,9 @@ const char *pcc_status_name(enum pcc_status status) return "SYNCHRONIZING"; case PCEP_PCC_OPERATING: return "OPERATING"; - default: - return "UNKNOWN"; } + + assert(!"Reached end of function where we do not expect to"); } const char *pcep_event_type_name(pcep_event_type event_type) @@ -118,9 +118,13 @@ const char *pcep_event_type_name(pcep_event_type event_type) return "PCC_RCVD_MAX_INVALID_MSGS"; case PCC_RCVD_MAX_UNKOWN_MSGS: return "PCC_RCVD_MAX_UNKOWN_MSGS"; - default: - return "UNKNOWN"; + case PCC_CONNECTION_FAILURE: + return "PCC_CONNECTION_FAILURE"; + case PCC_SENT_INVALID_OPEN: + return "PCC_SENT_INVALID_OPEN"; } + + assert(!"Reached end of function where we do not expect to"); } const char *pcep_error_type_name(enum pcep_error_type error_type) @@ -640,9 +644,11 @@ const char *pcep_message_type_name(enum pcep_message_types pcep_message_type) return "INITIATE"; case PCEP_TYPE_START_TLS: return "START_TLS"; - default: + case PCEP_TYPE_MAX: return "UNKNOWN"; } + + assert(!"Reached end of function where we are not expecting to"); } const char *pcep_object_class_name(enum pcep_object_classes obj_class) @@ -694,9 +700,11 @@ const char *pcep_object_class_name(enum pcep_object_classes obj_class) return "SERVER_IND"; case PCEP_OBJ_CLASS_ASSOCIATION: return "ASSOCIATION"; - default: + case PCEP_OBJ_CLASS_MAX: return "UNKNOWN"; } + + assert(!"Reached end of function where we are not expecting to"); } const char *pcep_object_type_name(enum pcep_object_classes obj_class, @@ -769,9 +777,9 @@ const char *pcep_lsp_status_name(enum pcep_lsp_operational_status status) return "GOING_DOWN"; case PCEP_LSP_OPERATIONAL_GOING_UP: return "GOING_UP"; - default: - return "UNKNOWN"; } + + assert(!"Reached end of function where we do not expect to"); } @@ -818,9 +826,11 @@ const char *pcep_tlv_type_name(enum pcep_object_tlv_types tlv_type) return "UNKNOWN"; case PCEP_OBJ_TLV_TYPE_ARBITRARY: return "ARBITRARY"; - default: - return "UNKNOWN"; + case PCEP_OBJ_TYPE_CISCO_BSID: + return "CISCO_BSID"; } + + assert(!"Reached end of function where we do not expect to"); } const char *pcep_ro_type_name(enum pcep_ro_subobj_types ro_type) @@ -839,9 +849,11 @@ const char *pcep_ro_type_name(enum pcep_ro_subobj_types ro_type) return "ASN"; case RO_SUBOBJ_TYPE_SR: return "SR"; - default: + case RO_SUBOBJ_UNKNOWN: return "UNKNOWN"; } + + assert(!"Reached end of function where we do not expect to"); } const char *pcep_nai_type_name(enum pcep_sr_subobj_nai nai_type) @@ -861,9 +873,11 @@ const char *pcep_nai_type_name(enum pcep_sr_subobj_nai nai_type) return "UNNUMBERED_IPV4_ADJACENCY"; case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: return "LINK_LOCAL_IPV6_ADJACENCY"; - default: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: return "UNKNOWN"; } + + assert(!"Reached end of function where we do not expect to"); } const char *pcep_metric_type_name(enum pcep_metric_types type) @@ -1115,7 +1129,7 @@ void _format_path(int ps, struct path *path) PATHD_FORMAT("%*sendpoint: %pI6\n", ps3, "", &path->nbkey.endpoint.ipaddr_v6); break; - default: + case IPADDR_NONE: PATHD_FORMAT("%*sendpoint: NONE\n", ps3, ""); break; } @@ -1300,7 +1314,9 @@ void _format_path_hop(int ps, struct path_hop *hop) &hop->nai.remote_addr.ipaddr_v6, hop->nai.remote_iface); break; - default: + case PCEP_SR_SUBOBJ_NAI_ABSENT: + case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: PATHD_FORMAT("%*sNAI: UNSUPPORTED\n", ps, ""); break; } @@ -1580,7 +1596,11 @@ void _format_pcep_object_ro_details(int ps, struct pcep_object_ro_subobj *ro) case RO_SUBOBJ_TYPE_SR: _format_pcep_object_ro_sr(ps, (struct pcep_ro_subobj_sr *)ro); break; - default: + case RO_SUBOBJ_TYPE_IPV6: + case RO_SUBOBJ_TYPE_LABEL: + case RO_SUBOBJ_TYPE_UNNUM: + case RO_SUBOBJ_TYPE_ASN: + case RO_SUBOBJ_UNKNOWN: PATHD_FORMAT("%*s...\n", ps, ""); break; } @@ -1668,7 +1688,9 @@ void _format_pcep_object_ro_sr(int ps, struct pcep_ro_subobj_sr *obj) PATHD_FORMAT("%*sNAI: %pI4(%u)/%pI4(%u)\n", ps, "", laddr4, *liface, raddr4, *riface); break; - default: + case PCEP_SR_SUBOBJ_NAI_ABSENT: + case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: PATHD_FORMAT("%*sNAI: UNSUPPORTED\n", ps, ""); break; } @@ -1731,7 +1753,23 @@ void _format_pcep_object_tlv_details(int ps, ps, (struct pcep_object_tlv_path_setup_type *)tlv_header); break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TYPE_CISCO_BSID: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: PATHD_FORMAT("%*s...\n", ps, ""); break; } diff --git a/pathd/path_pcep_lib.c b/pathd/path_pcep_lib.c index 6b247b705f..1ce01a1623 100644 --- a/pathd/path_pcep_lib.c +++ b/pathd/path_pcep_lib.c @@ -767,7 +767,9 @@ double_linked_list *pcep_lib_format_path(struct pcep_caps *caps, .s_addr, hop->nai.remote_iface); break; - default: + case PCEP_SR_SUBOBJ_NAI_ABSENT: + case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: break; } } @@ -854,7 +856,24 @@ void pcep_lib_parse_open(struct pcep_caps *caps, struct pcep_object_open *open) case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: pcep_lib_parse_open_objfun_list(caps, tlv_header); break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: + case PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME: + case PCEP_OBJ_TYPE_CISCO_BSID: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_TLV, "Unexpected OPEN's TLV %s (%u)", pcep_tlv_type_name(tlv_header->type), @@ -915,7 +934,26 @@ void pcep_lib_parse_rp(struct path *path, struct pcep_object_rp *rp) case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: // TODO: enforce the path setup type is SR_TE_PST break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID: + case PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_STATEFUL_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: + case PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME: + case PCEP_OBJ_TYPE_CISCO_BSID: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_TLV, "Unexpected RP's TLV %s (%u)", pcep_tlv_type_name(tlv->type), tlv->type); @@ -945,7 +983,26 @@ void pcep_lib_parse_srp(struct path *path, struct pcep_object_srp *srp) case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: // TODO: enforce the path setup type is SR_TE_PST break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_STATEFUL_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID: + case PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TYPE_CISCO_BSID: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_TLV, "Unexpected SRP's TLV %s (%u)", pcep_tlv_type_name(tlv->type), tlv->type); @@ -991,7 +1048,25 @@ void pcep_lib_parse_lsp(struct path *path, struct pcep_object_lsp *lsp) path->binding_sid = ntohl(path->binding_sid); path->binding_sid = (path->binding_sid >> 12); break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID: + case PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_STATEFUL_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_TLV, "Unexpected LSP TLV %s (%u)", pcep_tlv_type_name(tlv->type), tlv->type); @@ -1082,7 +1157,12 @@ void pcep_lib_parse_ero(struct path *path, struct pcep_object_ro *ero) hop = pcep_lib_parse_ero_sr( hop, (struct pcep_ro_subobj_sr *)obj); break; - default: + case RO_SUBOBJ_TYPE_IPV4: + case RO_SUBOBJ_TYPE_IPV6: + case RO_SUBOBJ_TYPE_LABEL: + case RO_SUBOBJ_TYPE_UNNUM: + case RO_SUBOBJ_TYPE_ASN: + case RO_SUBOBJ_UNKNOWN: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_ERO_SUBOBJ, "Unexpected ERO sub-object %s (%u)", pcep_ro_type_name(obj->ro_subobj_type), @@ -1181,7 +1261,9 @@ struct path_hop *pcep_lib_parse_ero_sr(struct path_hop *next, assert(n->data != NULL); hop->nai.remote_iface = *(uint32_t *)n->data; break; - default: + case PCEP_SR_SUBOBJ_NAI_ABSENT: + case PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: hop->has_nai = false; flog_warn(EC_PATH_PCEP_UNEXPECTED_SR_NAI, "Unexpected SR segment NAI type %s (%u)", diff --git a/pathd/path_pcep_pcc.c b/pathd/path_pcep_pcc.c index a1c56f93ad..524c77c1fb 100644 --- a/pathd/path_pcep_pcc.c +++ b/pathd/path_pcep_pcc.c @@ -450,9 +450,11 @@ int pcep_pcc_disable(struct ctrl_state *ctrl_state, struct pcc_state *pcc_state) pcc_state->sess = NULL; pcc_state->status = PCEP_PCC_DISCONNECTED; return 0; - default: + case PCEP_PCC_INITIALIZED: return 1; } + + assert(!"Reached end of function where we are not expecting to"); } void pcep_pcc_sync_path(struct ctrl_state *ctrl_state, @@ -614,7 +616,8 @@ void pcep_pcc_timeout_handler(struct ctrl_state *ctrl_state, free_req_entry(req); } break; - default: + case TO_UNDEFINED: + case TO_MAX: break; } } @@ -674,7 +677,7 @@ void pcep_pcc_pathd_event_handler(struct ctrl_state *ctrl_state, if (pcc_state->caps.is_stateful) send_report(pcc_state, path); return; - default: + case PCEP_PATH_UNDEFINED: flog_warn(EC_PATH_PCEP_RECOVERABLE_INTERNAL_ERROR, "Unexpected pathd event received by pcc %s: %u", pcc_state->tag, type); @@ -748,7 +751,7 @@ void pcep_pcc_pcep_event_handler(struct ctrl_state *ctrl_state, || pcc_state->status == PCEP_PCC_OPERATING); handle_pcep_message(ctrl_state, pcc_state, event->message); break; - default: + case PCC_CONNECTION_FAILURE: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEPLIB_EVENT, "Unexpected event from pceplib: %s", format_pcep_event(event)); @@ -1179,7 +1182,15 @@ void handle_pcep_message(struct ctrl_state *ctrl_state, case PCEP_TYPE_PCREP: handle_pcep_comp_reply(ctrl_state, pcc_state, msg); break; - default: + case PCEP_TYPE_OPEN: + case PCEP_TYPE_KEEPALIVE: + case PCEP_TYPE_PCREQ: + case PCEP_TYPE_PCNOTF: + case PCEP_TYPE_ERROR: + case PCEP_TYPE_CLOSE: + case PCEP_TYPE_REPORT: + case PCEP_TYPE_START_TLS: + case PCEP_TYPE_MAX: flog_warn(EC_PATH_PCEP_UNEXPECTED_PCEP_MESSAGE, "Unexpected pcep message from pceplib: %s", format_pcep_message(msg)); @@ -1953,9 +1964,11 @@ static uint32_t hash_nbkey(const struct lsp_nb_key *nbkey) case IPADDR_V6: return jhash(&nbkey->endpoint.ipaddr_v6, sizeof(nbkey->endpoint.ipaddr_v6), hash); - default: + case IPADDR_NONE: return hash; } + + assert(!"Reached end of function where we were not expecting to"); } static int cmp_nbkey(const struct lsp_nb_key *a, const struct lsp_nb_key *b) diff --git a/pathd/path_ted.c b/pathd/path_ted.c index 5fc8a1f032..5be63a68c8 100644 --- a/pathd/path_ted.c +++ b/pathd/path_ted.c @@ -527,7 +527,7 @@ uint32_t path_ted_config_write(struct vty *vty) case IMPORT_OSPFv3: vty_out(vty, " mpls-te import ospfv3\n"); break; - default: + case IMPORT_UNKNOWN: break; } } diff --git a/pathd/pathd.c b/pathd/pathd.c index 167c88aeab..2ca4f4cc9d 100644 --- a/pathd/pathd.c +++ b/pathd/pathd.c @@ -281,7 +281,8 @@ int srte_segment_entry_set_nai(struct srte_segment_entry *segment, segment->nai_local_iface = local_iface; status = srte_ted_do_query_type_e(segment, &pre, local_iface); break; - default: + case SRTE_SEGMENT_NAI_TYPE_NONE: + case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES: segment->nai_local_addr.ipa_type = IPADDR_NONE; segment->nai_local_iface = 0; segment->nai_remote_addr.ipa_type = IPADDR_NONE; @@ -472,7 +473,11 @@ int srte_policy_update_ted_sid(void) s_entry, &prefix_cli, s_entry->nai_algorithm); break; - default: + case SRTE_SEGMENT_NAI_TYPE_NONE: + case SRTE_SEGMENT_NAI_TYPE_IPV4_NODE: + case SRTE_SEGMENT_NAI_TYPE_IPV6_NODE: + case SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY: + case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES: break; } } @@ -1025,9 +1030,11 @@ static uint32_t filter_type_to_flag(enum affinity_filter_type type) return F_CANDIDATE_HAS_INCLUDE_ANY; case AFFINITY_FILTER_INCLUDE_ALL: return F_CANDIDATE_HAS_INCLUDE_ALL; - default: + case AFFINITY_FILTER_UNDEFINED: return 0; } + + assert(!"Reached end of function we should never hit"); } static const char *filter_type_name(enum affinity_filter_type type) @@ -1039,9 +1046,11 @@ static const char *filter_type_name(enum affinity_filter_type type) return "include-any"; case AFFINITY_FILTER_INCLUDE_ALL: return "include-all"; - default: + case AFFINITY_FILTER_UNDEFINED: return "unknown"; } + + assert(!"Reached end of function we should never hit"); } /** @@ -1155,7 +1164,9 @@ void srte_candidate_status_update(struct srte_candidate *candidate, int status) case SRTE_POLICY_STATUS_GOING_UP: case SRTE_POLICY_STATUS_DOWN: return; - default: + case SRTE_POLICY_STATUS_UNKNOWN: + case SRTE_POLICY_STATUS_UP: + case SRTE_POLICY_STATUS_GOING_DOWN: policy->status = SRTE_POLICY_STATUS_DOWN; srte_policy_status_log(policy); break; @@ -1165,7 +1176,10 @@ void srte_candidate_status_update(struct srte_candidate *candidate, int status) switch (policy->status) { case SRTE_POLICY_STATUS_UP: return; - default: + case SRTE_POLICY_STATUS_UNKNOWN: + case SRTE_POLICY_STATUS_DOWN: + case SRTE_POLICY_STATUS_GOING_DOWN: + case SRTE_POLICY_STATUS_GOING_UP: policy->status = SRTE_POLICY_STATUS_UP; srte_policy_status_log(policy); break; @@ -1263,9 +1277,11 @@ const char *srte_origin2str(enum srte_protocol_origin origin) return "BGP"; case SRTE_ORIGIN_LOCAL: return "Local"; - default: + case SRTE_ORIGIN_UNDEFINED: return "Unknown"; } + + assert(!"Reached end of function we should never hit"); } void path_policy_show_debugging(struct vty *vty) diff --git a/pbrd/pbr_nht.c b/pbrd/pbr_nht.c index 298c961519..b48670d5bf 100644 --- a/pbrd/pbr_nht.c +++ b/pbrd/pbr_nht.c @@ -547,7 +547,8 @@ void pbr_nht_set_seq_nhg_data(struct pbr_map_sequence *pbrms, case NEXTHOP_TYPE_IPV4: case NEXTHOP_TYPE_IPV4_IFINDEX: pbrms->family = AF_INET; - default: + case NEXTHOP_TYPE_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: break; } } diff --git a/pceplib/pcep_msg_objects_encoding.c b/pceplib/pcep_msg_objects_encoding.c index 75eb112e2e..560060436e 100644 --- a/pceplib/pcep_msg_objects_encoding.c +++ b/pceplib/pcep_msg_objects_encoding.c @@ -923,12 +923,13 @@ uint16_t pcep_encode_obj_ro(struct pcep_object_header *hdr, index += LENGTH_10WORDS; break; - default: + case PCEP_SR_SUBOBJ_NAI_ABSENT: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: break; } } break; - default: + case RO_SUBOBJ_UNKNOWN: break; } } @@ -1712,7 +1713,7 @@ struct pcep_object_header *pcep_decode_obj_ro(struct pcep_object_header *hdr, } break; case PCEP_SR_SUBOBJ_NAI_ABSENT: - default: + case PCEP_SR_SUBOBJ_NAI_UNKNOWN: break; } } break; diff --git a/pceplib/pcep_msg_tools.c b/pceplib/pcep_msg_tools.c index f7c25f447b..ca6a3ab0c5 100644 --- a/pceplib/pcep_msg_tools.c +++ b/pceplib/pcep_msg_tools.c @@ -313,7 +313,25 @@ void pcep_obj_free_tlv(struct pcep_object_tlv_header *tlv) } break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_STATEFUL_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION: + case PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TYPE_CISCO_BSID: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: break; } @@ -387,7 +405,25 @@ void pcep_obj_free_object(struct pcep_object_header *obj) } break; - default: + case PCEP_OBJ_CLASS_OPEN: + case PCEP_OBJ_CLASS_RP: + case PCEP_OBJ_CLASS_NOPATH: + case PCEP_OBJ_CLASS_ENDPOINTS: + case PCEP_OBJ_CLASS_BANDWIDTH: + case PCEP_OBJ_CLASS_METRIC: + case PCEP_OBJ_CLASS_LSPA: + case PCEP_OBJ_CLASS_NOTF: + case PCEP_OBJ_CLASS_ERROR: + case PCEP_OBJ_CLASS_CLOSE: + case PCEP_OBJ_CLASS_OF: + case PCEP_OBJ_CLASS_LSP: + case PCEP_OBJ_CLASS_SRP: + case PCEP_OBJ_CLASS_VENDOR_INFO: + case PCEP_OBJ_CLASS_INTER_LAYER: + case PCEP_OBJ_CLASS_REQ_ADAP_CAP: + case PCEP_OBJ_CLASS_SERVER_IND: + case PCEP_OBJ_CLASS_ASSOCIATION: + case PCEP_OBJ_CLASS_MAX: break; } diff --git a/pceplib/pcep_session_logic_states.c b/pceplib/pcep_session_logic_states.c index 3e9c701a62..e7fbbb45ec 100644 --- a/pceplib/pcep_session_logic_states.c +++ b/pceplib/pcep_session_logic_states.c @@ -242,7 +242,22 @@ bool verify_pcep_open_object(pcep_session *session, case PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY: break; - default: + case PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR: + case PCEP_OBJ_TLV_TYPE_OBJECTIVE_FUNCTION_LIST: + case PCEP_OBJ_TLV_TYPE_VENDOR_INFO: + case PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME: + case PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS: + case PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE: + case PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC: + case PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID: + case PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE: + case PCEP_OBJ_TLV_TYPE_UNKNOWN: + case PCEP_OBJ_TYPE_CISCO_BSID: + case PCEP_OBJ_TLV_TYPE_ARBITRARY: /* TODO how to handle unrecognized TLV ?? */ pcep_log( LOG_INFO, @@ -895,7 +910,7 @@ void handle_timer_event(pcep_session_event *event) case SESSION_STATE_INITIALIZED: case SESSION_STATE_PCEP_CONNECTED: - default: + case SESSION_STATE_UNKNOWN: pcep_log( LOG_INFO, "%s: handle_timer_event unrecognized state transition, timer_id [%d] state [%d] session [%d]", @@ -1120,7 +1135,8 @@ void handle_socket_comm_event(pcep_session_event *event) message_enqueued = true; break; - default: + case PCEP_TYPE_START_TLS: + case PCEP_TYPE_MAX: pcep_log(LOG_INFO, "%s: \t UnSupported message", __func__); send_pcep_error(session, diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c index 2cc98f7329..fdd7191df9 100644 --- a/pimd/pim_assert.c +++ b/pimd/pim_assert.c @@ -529,7 +529,7 @@ static void on_assert_timer(struct thread *t) case PIM_IFASSERT_I_AM_LOSER: assert_action_a5(ch); break; - default: { + case PIM_IFASSERT_NOINFO: { if (PIM_DEBUG_PIM_EVENTS) zlog_warn( "%s: (S,G)=%s invalid assert state %d on interface %s", diff --git a/pimd/pim_mlag.c b/pimd/pim_mlag.c index 9763a79a8d..2b457220fe 100644 --- a/pimd/pim_mlag.c +++ b/pimd/pim_mlag.c @@ -871,7 +871,11 @@ int pim_zebra_mlag_handle_msg(int cmd, struct zclient *zclient, pim_mlag_process_mroute_del(msg); } } break; - default: + case MLAG_MSG_NONE: + case MLAG_REGISTER: + case MLAG_DEREGISTER: + case MLAG_DUMP: + case MLAG_PIM_CFG_DUMP: break; } return 0; diff --git a/pimd/pim_msdp_packet.c b/pimd/pim_msdp_packet.c index 5230f6a332..8384590996 100644 --- a/pimd/pim_msdp_packet.c +++ b/pimd/pim_msdp_packet.c @@ -281,7 +281,12 @@ void pim_msdp_write(struct thread *thread) case PIM_MSDP_V4_SOURCE_ACTIVE: mp->sa_tx_cnt++; break; - default:; + case PIM_MSDP_V4_SOURCE_ACTIVE_REQUEST: + case PIM_MSDP_V4_SOURCE_ACTIVE_RESPONSE: + case PIM_MSDP_RESERVED: + case PIM_MSDP_TRACEROUTE_PROGRESS: + case PIM_MSDP_TRACEROUTE_REPLY: + break; } if (PIM_DEBUG_MSDP_PACKETS) { pim_msdp_pkt_dump(mp, type, len, false /*rx*/, s); @@ -626,8 +631,13 @@ static void pim_msdp_pkt_rx(struct pim_msdp_peer *mp) mp->sa_rx_cnt++; pim_msdp_pkt_sa_rx(mp, len); break; - default: + case PIM_MSDP_V4_SOURCE_ACTIVE_REQUEST: + case PIM_MSDP_V4_SOURCE_ACTIVE_RESPONSE: + case PIM_MSDP_RESERVED: + case PIM_MSDP_TRACEROUTE_PROGRESS: + case PIM_MSDP_TRACEROUTE_REPLY: mp->unk_rx_cnt++; + break; } } diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index a33da64568..109de77d1b 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -354,6 +354,9 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr, case NEXTHOP_TYPE_IPV4_IFINDEX: nhaddr = nh->gate.ipv4; break; + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + continue; #else case NEXTHOP_TYPE_IPV6: if (nh->ifindex == IFINDEX_INTERNAL) @@ -363,12 +366,15 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr, case NEXTHOP_TYPE_IPV6_IFINDEX: nhaddr = nh->gate.ipv6; break; + case NEXTHOP_TYPE_IPV4: + case NEXTHOP_TYPE_IPV4_IFINDEX: + continue; #endif case NEXTHOP_TYPE_IFINDEX: nhaddr = bsr_addr; break; - default: + case NEXTHOP_TYPE_BLACKHOLE: continue; } diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index 0481c3a769..8c0825fd28 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -263,6 +263,7 @@ static int zclient_read_nexthop(struct pim_instance *pim, &nh_ip4, nh_ifi, &addr); #endif break; + case NEXTHOP_TYPE_IPV6: case NEXTHOP_TYPE_IPV6_IFINDEX: stream_get(&nh_ip6, s, sizeof(nh_ip6)); nh_ifi = stream_getl(s); @@ -307,7 +308,7 @@ static int zclient_read_nexthop(struct pim_instance *pim, ++num_ifindex; #endif break; - default: + case NEXTHOP_TYPE_BLACKHOLE: /* do nothing */ zlog_warn( "%s: found non-ifindex nexthop type=%d for address %pPAs(%s)", diff --git a/pimd/pim_zpthread.c b/pimd/pim_zpthread.c index e6fb3b3a17..e12a5c4374 100644 --- a/pimd/pim_zpthread.c +++ b/pimd/pim_zpthread.c @@ -35,7 +35,7 @@ int32_t mlag_bulk_cnt; static void pim_mlag_zebra_fill_header(enum mlag_msg_type msg_type) { uint32_t fill_msg_type = msg_type; - uint16_t data_len; + uint16_t data_len = 0; uint16_t msg_cnt = 1; if (msg_type == MLAG_MSG_NONE) @@ -54,7 +54,14 @@ static void pim_mlag_zebra_fill_header(enum mlag_msg_type msg_type) data_len = sizeof(struct mlag_mroute_del); fill_msg_type = MLAG_MROUTE_DEL_BULK; break; - default: + case MLAG_MSG_NONE: + case MLAG_STATUS_UPDATE: + case MLAG_DUMP: + case MLAG_MROUTE_ADD_BULK: + case MLAG_MROUTE_DEL_BULK: + case MLAG_PIM_CFG_DUMP: + case MLAG_VXLAN_UPDATE: + case MLAG_PEER_FRR_STATUS: data_len = 0; break; } diff --git a/qpb/qpb.h b/qpb/qpb.h index 45690fb4ac..d4602e90a4 100644 --- a/qpb/qpb.h +++ b/qpb/qpb.h @@ -77,7 +77,7 @@ static inline int qpb__address_family__get(Qpb__AddressFamily pb_family, case QPB__ADDRESS_FAMILY__UNKNOWN_AF: return 0; - default: /* protobuf "magic value" _QPB__ADDRESS_FAMILY_IS_INT_SIZE */ + case _QPB__ADDRESS_FAMILY_IS_INT_SIZE: return 0; } diff --git a/ripd/rip_nb_state.c b/ripd/rip_nb_state.c index 184c760998..9b8f518cd3 100644 --- a/ripd/rip_nb_state.c +++ b/ripd/rip_nb_state.c @@ -236,9 +236,14 @@ struct yang_data *ripd_instance_state_routes_route_next_hop_get_elem( case NEXTHOP_TYPE_IPV4: case NEXTHOP_TYPE_IPV4_IFINDEX: return yang_data_new_ipv4(args->xpath, &rinfo->nh.gate.ipv4); - default: + case NEXTHOP_TYPE_IFINDEX: + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: return NULL; } + + assert(!"Reached end of function where we do not expect to reach"); } /* @@ -257,9 +262,14 @@ struct yang_data *ripd_instance_state_routes_route_interface_get_elem( return yang_data_new_string( args->xpath, ifindex2ifname(rinfo->nh.ifindex, rip->vrf->vrf_id)); - default: + case NEXTHOP_TYPE_IPV4: + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: return NULL; } + + assert(!"Reached end of function where we do not expect to reach"); } /* diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index 755debd0a4..0350dc2240 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -1933,7 +1933,8 @@ void ripng_event(struct ripng *ripng, enum ripng_event event, int sock) thread_add_event(master, ripng_triggered_update, ripng, 0, &ripng->t_triggered_update); break; - default: + case RIPNG_ZEBRA: + case RIPNG_REQUEST_EVENT: break; } } diff --git a/staticd/static_routes.c b/staticd/static_routes.c index ccbb98bd11..0c39058a8d 100644 --- a/staticd/static_routes.c +++ b/staticd/static_routes.c @@ -209,7 +209,8 @@ bool static_add_nexthop_validate(const char *nh_vrf_name, vrf->vrf_id)) return false; break; - default: + case STATIC_IFNAME: + case STATIC_BLACKHOLE: break; } @@ -302,7 +303,8 @@ struct static_nexthop *static_add_nexthop(struct static_path *pn, case STATIC_IPV6_GATEWAY_IFNAME: nh->addr.ipv6 = ipaddr->ipaddr_v6; break; - default: + case STATIC_IFNAME: + case STATIC_BLACKHOLE: break; } /* diff --git a/staticd/static_vty.c b/staticd/static_vty.c index c5bea755ec..f9c88f8bec 100644 --- a/staticd/static_vty.c +++ b/staticd/static_vty.c @@ -135,7 +135,9 @@ static int static_route_nb_run(struct vty *vty, struct static_route_args *args) if (args->source) assert(!!str2prefix(args->source, &src)); break; - default: + case AFI_L2VPN: + case AFI_UNSPEC: + case AFI_MAX: break; } diff --git a/tools/start-stop-daemon.c b/tools/start-stop-daemon.c index 0e4cf271f3..e196a372e4 100644 --- a/tools/start-stop-daemon.c +++ b/tools/start-stop-daemon.c @@ -885,7 +885,7 @@ static int run_stop_schedule(void) strerror(errno)); } - default: + case sched_forever: assert(!"schedule[].type value must be valid"); } diff --git a/zebra/connected.c b/zebra/connected.c index c01be58e82..9c207acf34 100644 --- a/zebra/connected.c +++ b/zebra/connected.c @@ -247,7 +247,9 @@ void connected_up(struct interface *ifp, struct connected *ifc) return; #endif break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: flog_warn(EC_ZEBRA_CONNECTED_AFI_UNKNOWN, "Received unknown AFI: %s", afi2str(afi)); return; @@ -435,7 +437,9 @@ void connected_down(struct interface *ifp, struct connected *ifc) if (IN6_IS_ADDR_UNSPECIFIED(&p.u.prefix6)) return; break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: zlog_warn("Unknown AFI: %s", afi2str(afi)); break; } diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c index d628e47492..835659332b 100644 --- a/zebra/if_netlink.c +++ b/zebra/if_netlink.c @@ -1362,7 +1362,57 @@ static ssize_t netlink_intf_msg_encoder(struct zebra_dplane_ctx *ctx, void *buf, case DPLANE_OP_INTF_DELETE: cmd = RTM_DELLINK; break; - default: + case DPLANE_OP_NONE: + case DPLANE_OP_ROUTE_INSTALL: + case DPLANE_OP_ROUTE_UPDATE: + case DPLANE_OP_ROUTE_DELETE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_LSP_INSTALL: + case DPLANE_OP_LSP_DELETE: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_LSP_UPDATE: + case DPLANE_OP_PW_INSTALL: + case DPLANE_OP_PW_UNINSTALL: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_NEIGH_INSTALL: + case DPLANE_OP_NEIGH_UPDATE: + case DPLANE_OP_NEIGH_DELETE: + case DPLANE_OP_NEIGH_DISCOVER: + case DPLANE_OP_VTEP_ADD: + case DPLANE_OP_VTEP_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_NEIGH_IP_INSTALL: + case DPLANE_OP_NEIGH_IP_DELETE: + case DPLANE_OP_NEIGH_TABLE_UPDATE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: flog_err( EC_ZEBRA_NHG_FIB_UPDATE, "Context received for kernel interface update with incorrect OP code (%u)", diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 684ccc3ed5..332b8fc674 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -1226,7 +1226,8 @@ int rtm_write(int message, union sockunion *dest, union sockunion *mask, case BLACKHOLE_REJECT: msg.rtm.rtm_flags |= RTF_REJECT; break; - default: + case BLACKHOLE_NULL: + case BLACKHOLE_ADMINPROHIB: msg.rtm.rtm_flags |= RTF_BLACKHOLE; break; } diff --git a/zebra/router-id.c b/zebra/router-id.c index 9f56cf0e6a..ea429f683a 100644 --- a/zebra/router-id.c +++ b/zebra/router-id.c @@ -113,9 +113,13 @@ int router_id_get(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf) if (addr) memcpy(&p->u.prefix6, addr, sizeof(struct in6_addr)); return 0; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: return -1; } + + assert(!"Reached end of function we should never hit"); } static int router_id_set(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf) @@ -133,7 +137,9 @@ static int router_id_set(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf) case AFI_IP6: zvrf->rid6_user_assigned.u.prefix6 = p->u.prefix6; break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: return -1; } diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 79d79d74be..216b719ff8 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -1569,7 +1569,16 @@ static bool _netlink_route_build_singlepath(const struct prefix *p, ctx->table)) return false; break; - default: + case ZEBRA_SEG6_LOCAL_ACTION_END_DX2: + case ZEBRA_SEG6_LOCAL_ACTION_END_DX6: + case ZEBRA_SEG6_LOCAL_ACTION_END_B6: + case ZEBRA_SEG6_LOCAL_ACTION_END_B6_ENCAP: + case ZEBRA_SEG6_LOCAL_ACTION_END_BM: + case ZEBRA_SEG6_LOCAL_ACTION_END_S: + case ZEBRA_SEG6_LOCAL_ACTION_END_AS: + case ZEBRA_SEG6_LOCAL_ACTION_END_AM: + case ZEBRA_SEG6_LOCAL_ACTION_END_BPF: + case ZEBRA_SEG6_LOCAL_ACTION_UNSPEC: zlog_err("%s: unsupport seg6local behaviour action=%u", __func__, nexthop->nh_srv6->seg6local_action); @@ -2151,7 +2160,8 @@ ssize_t netlink_route_multipath_msg_encode(int cmd, case BLACKHOLE_REJECT: req->r.rtm_type = RTN_UNREACHABLE; break; - default: + case BLACKHOLE_UNSPEC: + case BLACKHOLE_NULL: req->r.rtm_type = RTN_BLACKHOLE; break; } @@ -4448,7 +4458,7 @@ static int netlink_neigh_table_update_ctx(const struct zebra_dplane_ctx *ctx, static ssize_t netlink_neigh_msg_encoder(struct zebra_dplane_ctx *ctx, void *buf, size_t buflen) { - ssize_t ret; + ssize_t ret = 0; switch (dplane_ctx_get_op(ctx)) { case DPLANE_OP_NEIGH_INSTALL: @@ -4472,7 +4482,51 @@ static ssize_t netlink_neigh_msg_encoder(struct zebra_dplane_ctx *ctx, case DPLANE_OP_NEIGH_TABLE_UPDATE: ret = netlink_neigh_table_update_ctx(ctx, buf, buflen); break; - default: + case DPLANE_OP_ROUTE_INSTALL: + case DPLANE_OP_ROUTE_UPDATE: + case DPLANE_OP_ROUTE_DELETE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_LSP_INSTALL: + case DPLANE_OP_LSP_UPDATE: + case DPLANE_OP_LSP_DELETE: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_PW_INSTALL: + case DPLANE_OP_PW_UNINSTALL: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: + case DPLANE_OP_NONE: ret = -1; } diff --git a/zebra/tc_netlink.c b/zebra/tc_netlink.c index 1fa80e846a..757dc1d343 100644 --- a/zebra/tc_netlink.c +++ b/zebra/tc_netlink.c @@ -745,7 +745,8 @@ int netlink_qdisc_change(struct nlmsghdr *h, ns_id_t ns_id, int startup) case TC_QDISC_NOQUEUE: /* "noqueue" is the default qdisc */ break; - default: + case TC_QDISC_HTB: + case TC_QDISC_UNSPEC: break; } diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index a2233a6667..fdea766a1b 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -143,7 +143,7 @@ static int zserv_encode_nexthop(struct stream *s, struct nexthop *nexthop) case NEXTHOP_TYPE_IFINDEX: stream_putl(s, nexthop->ifindex); break; - default: + case NEXTHOP_TYPE_BLACKHOLE: /* do nothing */ break; } @@ -576,7 +576,9 @@ int zsend_redistribute_route(int cmd, struct zserv *client, else client->redist_v6_del_cnt++; break; - default: + case AFI_L2VPN: + case AFI_MAX: + case AFI_UNSPEC: break; } @@ -3424,7 +3426,10 @@ static inline void zread_tc_filter(ZAPI_HANDLER_ARGS) STREAM_GETL(s, filter.filter.u.flower.classid); break; } - default: + case TC_FILTER_BPF: + case TC_FILTER_FLOW: + case TC_FILTER_U32: + case TC_FILTER_UNSPEC: break; } diff --git a/zebra/zebra_fpm.c b/zebra/zebra_fpm.c index f9f4ee476d..863bf61aae 100644 --- a/zebra/zebra_fpm.c +++ b/zebra/zebra_fpm.c @@ -902,7 +902,7 @@ static inline int zfpm_encode_route(rib_dest_t *dest, struct route_entry *re, #endif /* HAVE_NETLINK */ break; - default: + case ZFPM_MSG_FORMAT_NONE: break; } diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c index 06c45578a6..fd1bab21d0 100644 --- a/zebra/zebra_fpm_netlink.c +++ b/zebra/zebra_fpm_netlink.c @@ -315,7 +315,7 @@ static int netlink_route_info_fill(struct netlink_route_info *ri, int cmd, ri->rtm_type = RTN_UNREACHABLE; break; case BLACKHOLE_NULL: - default: + case BLACKHOLE_UNSPEC: ri->rtm_type = RTN_BLACKHOLE; break; } diff --git a/zebra/zebra_fpm_protobuf.c b/zebra/zebra_fpm_protobuf.c index 4b31cc0281..d18a62e6f8 100644 --- a/zebra/zebra_fpm_protobuf.c +++ b/zebra/zebra_fpm_protobuf.c @@ -186,7 +186,8 @@ static Fpm__AddRoute *create_add_route_message(qpb_allocator_t *allocator, msg->route_type = FPM__ROUTE_TYPE__UNREACHABLE; break; case BLACKHOLE_NULL: - default: + case BLACKHOLE_UNSPEC: + case BLACKHOLE_ADMINPROHIB: msg->route_type = FPM__ROUTE_TYPE__BLACKHOLE; break; } diff --git a/zebra/zebra_mlag.c b/zebra/zebra_mlag.c index 2042f94038..5603c1e2f8 100644 --- a/zebra/zebra_mlag.c +++ b/zebra/zebra_mlag.c @@ -888,7 +888,14 @@ int zebra_mlag_protobuf_encode_client_data(struct stream *s, uint32_t *msg_type) if (cleanup) return -1; } break; - default: + case MLAG_REGISTER: + case MLAG_DEREGISTER: + case MLAG_STATUS_UPDATE: + case MLAG_DUMP: + case MLAG_PIM_CFG_DUMP: + case MLAG_VXLAN_UPDATE: + case MLAG_PEER_FRR_STATUS: + case MLAG_MSG_NONE: break; } diff --git a/zebra/zebra_mpls.c b/zebra/zebra_mpls.c index fe3f77f3c7..13963d9cc3 100644 --- a/zebra/zebra_mpls.c +++ b/zebra/zebra_mpls.c @@ -1848,7 +1848,57 @@ void zebra_mpls_lsp_dplane_result(struct zebra_dplane_ctx *ctx) ZEBRA_SR_POLICY_LABEL_REMOVED); break; - default: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_NONE: + case DPLANE_OP_ROUTE_INSTALL: + case DPLANE_OP_ROUTE_UPDATE: + case DPLANE_OP_ROUTE_DELETE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_PW_INSTALL: + case DPLANE_OP_PW_UNINSTALL: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_NEIGH_INSTALL: + case DPLANE_OP_NEIGH_UPDATE: + case DPLANE_OP_NEIGH_DELETE: + case DPLANE_OP_VTEP_ADD: + case DPLANE_OP_VTEP_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_NEIGH_DISCOVER: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_NEIGH_IP_INSTALL: + case DPLANE_OP_NEIGH_IP_DELETE: + case DPLANE_OP_NEIGH_TABLE_UPDATE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: break; } /* Switch */ diff --git a/zebra/zebra_mpls_openbsd.c b/zebra/zebra_mpls_openbsd.c index cdf34936c0..a13f443eb2 100644 --- a/zebra/zebra_mpls_openbsd.c +++ b/zebra/zebra_mpls_openbsd.c @@ -255,7 +255,57 @@ static int kernel_lsp_cmd(struct zebra_dplane_ctx *ctx) case DPLANE_OP_LSP_UPDATE: action = RTM_CHANGE; break; - default: + case DPLANE_OP_NONE: + case DPLANE_OP_ROUTE_INSTALL: + case DPLANE_OP_ROUTE_UPDATE: + case DPLANE_OP_ROUTE_DELETE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_PW_INSTALL: + case DPLANE_OP_PW_UNINSTALL: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_NEIGH_INSTALL: + case DPLANE_OP_NEIGH_UPDATE: + case DPLANE_OP_NEIGH_DELETE: + case DPLANE_OP_VTEP_ADD: + case DPLANE_OP_VTEP_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_NEIGH_DISCOVER: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_NEIGH_IP_INSTALL: + case DPLANE_OP_NEIGH_IP_DELETE: + case DPLANE_OP_NEIGH_TABLE_UPDATE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: return -1; } @@ -415,7 +465,58 @@ enum zebra_dplane_result kernel_pw_update(struct zebra_dplane_ctx *ctx) case DPLANE_OP_PW_UNINSTALL: result = kmpw_uninstall(ctx); break; - default: + case DPLANE_OP_NONE: + case DPLANE_OP_ROUTE_INSTALL: + case DPLANE_OP_ROUTE_UPDATE: + case DPLANE_OP_ROUTE_DELETE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_LSP_INSTALL: + case DPLANE_OP_LSP_UPDATE: + case DPLANE_OP_LSP_DELETE: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_NEIGH_INSTALL: + case DPLANE_OP_NEIGH_UPDATE: + case DPLANE_OP_NEIGH_DELETE: + case DPLANE_OP_VTEP_ADD: + case DPLANE_OP_VTEP_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_NEIGH_DISCOVER: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_NEIGH_IP_INSTALL: + case DPLANE_OP_NEIGH_IP_DELETE: + case DPLANE_OP_NEIGH_TABLE_UPDATE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: break; } diff --git a/zebra/zebra_nb_state.c b/zebra/zebra_nb_state.c index 219e4d028a..0f3d56f214 100644 --- a/zebra/zebra_nb_state.c +++ b/zebra/zebra_nb_state.c @@ -706,7 +706,7 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_nh_type_get_elem( case NEXTHOP_TYPE_IPV6_IFINDEX: return yang_data_new_string(args->xpath, "ip6-ifindex"); break; - default: + case NEXTHOP_TYPE_BLACKHOLE: break; } diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index 758fed7280..0bca00ced3 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -2250,7 +2250,9 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe, endpoint.ipa_type = IPADDR_V6; endpoint.ipaddr_v6 = nexthop->gate.ipv6; break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: flog_err(EC_LIB_DEVELOPMENT, "%s: unknown address-family: %u", __func__, afi); @@ -2291,7 +2293,9 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe, p.prefixlen = IPV6_MAX_BITLEN; p.u.prefix6 = nexthop->gate.ipv6; break; - default: + case AFI_UNSPEC: + case AFI_L2VPN: + case AFI_MAX: assert(afi != AFI_IP && afi != AFI_IP6); break; } diff --git a/zebra/zebra_pbr.c b/zebra/zebra_pbr.c index 405241fc22..b94fabacfb 100644 --- a/zebra/zebra_pbr.c +++ b/zebra/zebra_pbr.c @@ -648,7 +648,8 @@ static void zebra_pbr_expand_rule(struct zebra_pbr_rule *rule) zebra_neigh_ref(action->ifindex, &ip, rule); break; - default: + case NEXTHOP_TYPE_BLACKHOLE: + case NEXTHOP_TYPE_IFINDEX: action->afi = AFI_UNSPEC; } } diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 2f71a10d3d..ba8073defe 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -2158,7 +2158,58 @@ static void rib_process_result(struct zebra_dplane_ctx *ctx) (old_re && RIB_SYSTEM_ROUTE(old_re))) zebra_rib_fixup_system(rn); break; - default: + + case DPLANE_OP_NONE: + case DPLANE_OP_ROUTE_NOTIFY: + case DPLANE_OP_NH_INSTALL: + case DPLANE_OP_NH_UPDATE: + case DPLANE_OP_NH_DELETE: + case DPLANE_OP_LSP_INSTALL: + case DPLANE_OP_LSP_UPDATE: + case DPLANE_OP_LSP_DELETE: + case DPLANE_OP_LSP_NOTIFY: + case DPLANE_OP_PW_INSTALL: + case DPLANE_OP_PW_UNINSTALL: + case DPLANE_OP_SYS_ROUTE_ADD: + case DPLANE_OP_SYS_ROUTE_DELETE: + case DPLANE_OP_ADDR_INSTALL: + case DPLANE_OP_ADDR_UNINSTALL: + case DPLANE_OP_MAC_INSTALL: + case DPLANE_OP_MAC_DELETE: + case DPLANE_OP_NEIGH_INSTALL: + case DPLANE_OP_NEIGH_UPDATE: + case DPLANE_OP_NEIGH_DELETE: + case DPLANE_OP_VTEP_ADD: + case DPLANE_OP_VTEP_DELETE: + case DPLANE_OP_RULE_ADD: + case DPLANE_OP_RULE_DELETE: + case DPLANE_OP_RULE_UPDATE: + case DPLANE_OP_NEIGH_DISCOVER: + case DPLANE_OP_BR_PORT_UPDATE: + case DPLANE_OP_IPTABLE_ADD: + case DPLANE_OP_IPTABLE_DELETE: + case DPLANE_OP_IPSET_ADD: + case DPLANE_OP_IPSET_DELETE: + case DPLANE_OP_IPSET_ENTRY_ADD: + case DPLANE_OP_IPSET_ENTRY_DELETE: + case DPLANE_OP_NEIGH_IP_INSTALL: + case DPLANE_OP_NEIGH_IP_DELETE: + case DPLANE_OP_NEIGH_TABLE_UPDATE: + case DPLANE_OP_GRE_SET: + case DPLANE_OP_INTF_ADDR_ADD: + case DPLANE_OP_INTF_ADDR_DEL: + case DPLANE_OP_INTF_NETCONFIG: + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + case DPLANE_OP_TC_QDISC_INSTALL: + case DPLANE_OP_TC_QDISC_UNINSTALL: + case DPLANE_OP_TC_CLASS_ADD: + case DPLANE_OP_TC_CLASS_DELETE: + case DPLANE_OP_TC_CLASS_UPDATE: + case DPLANE_OP_TC_FILTER_ADD: + case DPLANE_OP_TC_FILTER_DELETE: + case DPLANE_OP_TC_FILTER_UPDATE: break; } @@ -4334,7 +4385,7 @@ void rib_update_table(struct route_table *table, enum rib_update_event event, case RIB_UPDATE_OTHER: rib_update_route_node(rn, rtype); break; - default: + case RIB_UPDATE_MAX: break; } } diff --git a/zebra/zebra_rnh.c b/zebra/zebra_rnh.c index e24556122b..342a8d0f96 100644 --- a/zebra/zebra_rnh.c +++ b/zebra/zebra_rnh.c @@ -1401,7 +1401,8 @@ void show_nexthop_json_helper(json_object *json_nexthop, json_object_string_addf(json_nexthop, "source", "%pI6", &nexthop->src.ipv6); break; - default: + case NEXTHOP_TYPE_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: break; } @@ -1523,7 +1524,8 @@ void show_route_nexthop_helper(struct vty *vty, const struct route_entry *re, if (!IPV6_ADDR_SAME(&nexthop->src.ipv6, &in6addr_any)) vty_out(vty, ", src %pI6", &nexthop->src.ipv6); break; - default: + case NEXTHOP_TYPE_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: break; } diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c index 4f43cea493..5f307f95e3 100644 --- a/zebra/zebra_routemap.c +++ b/zebra/zebra_routemap.c @@ -1049,7 +1049,9 @@ route_match_ip_next_hop(void *rule, const struct prefix *prefix, void *object) p.prefix = nh_data->nexthop->gate.ipv4; p.prefixlen = IPV4_MAX_BITLEN; break; - default: + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: return RMAP_NOMATCH; } alist = access_list_lookup(AFI_IP, (char *)rule); @@ -1105,7 +1107,9 @@ route_match_ip_next_hop_prefix_list(void *rule, const struct prefix *prefix, p.prefix = nh_data->nexthop->gate.ipv4; p.prefixlen = IPV4_MAX_BITLEN; break; - default: + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: return RMAP_NOMATCH; } plist = prefix_list_lookup(AFI_IP, (char *)rule); @@ -1364,7 +1368,9 @@ route_match_ip_nexthop_prefix_len(void *rule, const struct prefix *prefix, p.prefix = nh_data->nexthop->gate.ipv4; p.prefixlen = IPV4_MAX_BITLEN; break; - default: + case NEXTHOP_TYPE_IPV6: + case NEXTHOP_TYPE_IPV6_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: return RMAP_NOMATCH; } return ((p.prefixlen == *prefixlen) ? RMAP_MATCH : RMAP_NOMATCH); diff --git a/zebra/zebra_srte.c b/zebra/zebra_srte.c index 746158c4b3..d50d3dfe89 100644 --- a/zebra/zebra_srte.c +++ b/zebra/zebra_srte.c @@ -140,7 +140,7 @@ static int zebra_sr_policy_notify_update_client(struct zebra_sr_policy *policy, stream_putc(s, IPV6_MAX_BITLEN); stream_put(s, &policy->endpoint.ipaddr_v6, IPV6_MAX_BYTELEN); break; - default: + case IPADDR_NONE: flog_warn(EC_LIB_DEVELOPMENT, "%s: unknown policy endpoint address family: %u", __func__, policy->endpoint.ipa_type); @@ -202,7 +202,7 @@ static void zebra_sr_policy_notify_update(struct zebra_sr_policy *policy) p.prefixlen = IPV6_MAX_BITLEN; p.u.prefix6 = policy->endpoint.ipaddr_v6; break; - default: + case IPADDR_NONE: flog_warn(EC_LIB_DEVELOPMENT, "%s: unknown policy endpoint address family: %u", __func__, policy->endpoint.ipa_type); diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c index 8a73ae3d28..d96ee4890f 100644 --- a/zebra/zebra_vty.c +++ b/zebra/zebra_vty.c @@ -405,7 +405,8 @@ static void show_nexthop_detail_helper(struct vty *vty, } break; - default: + case NEXTHOP_TYPE_IFINDEX: + case NEXTHOP_TYPE_BLACKHOLE: break; }