diff --git a/lib/zclient.c b/lib/zclient.c index 75005d656b..72fa2679b3 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -940,7 +940,7 @@ int zapi_route_encode(u_char cmd, struct stream *s, struct zapi_route *api) api->nexthop_num = MULTIPATH_NUM; } - stream_putc(s, api->nexthop_num); + stream_putw(s, api->nexthop_num); for (i = 0; i < api->nexthop_num; i++) { api_nh = &api->nexthops[i]; @@ -1047,7 +1047,7 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) /* Nexthops. */ if (CHECK_FLAG(api->message, ZAPI_MESSAGE_NEXTHOP)) { - api->nexthop_num = stream_getc(s); + api->nexthop_num = stream_getw(s); if (api->nexthop_num > MULTIPATH_NUM) { zlog_warn("%s: invalid number of nexthops (%u)", __func__, api->nexthop_num); diff --git a/lib/zclient.h b/lib/zclient.h index bae52a441b..7c4780201e 100644 --- a/lib/zclient.h +++ b/lib/zclient.h @@ -242,7 +242,7 @@ struct zapi_route { struct prefix prefix; struct prefix_ipv6 src_prefix; - u_char nexthop_num; + u_int16_t nexthop_num; struct zapi_nexthop nexthops[MULTIPATH_NUM]; u_char distance; diff --git a/zebra/zserv.c b/zebra/zserv.c index 56cca10654..7899a8375c 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -1049,7 +1049,7 @@ static int zread_route_add(struct zserv *client, u_short length, afi_t afi; struct prefix_ipv6 *src_p = NULL; struct route_entry *re; - struct nexthop *nexthop; + struct nexthop *nexthop = NULL; int i, ret; s = client->ibuf; @@ -1364,7 +1364,7 @@ static int zread_ipv4_route_ipv6_nexthop_add(struct zserv *client, static unsigned int ifindices[MULTIPATH_NUM]; int ret; static mpls_label_t labels[MULTIPATH_NUM]; - enum lsp_types_t label_type; + enum lsp_types_t label_type = ZEBRA_LSP_NONE; mpls_label_t label; struct nexthop *nexthop; @@ -1513,7 +1513,7 @@ static int zread_ipv6_add(struct zserv *client, u_short length, static unsigned int ifindices[MULTIPATH_NUM]; int ret; static mpls_label_t labels[MULTIPATH_NUM]; - enum lsp_types_t label_type; + enum lsp_types_t label_type = ZEBRA_LSP_NONE; mpls_label_t label; struct nexthop *nexthop;