From: Mark Stapp Date: Mon, 4 Jan 2021 17:50:19 +0000 (-0500) Subject: libs,zebra: remove zapi nhg encode and decode public apis X-Git-Tag: base_8.0~476^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=5898ce6f35e1a2fa58fcae1dea5fb1eb808d44cf;p=matthieu%2Ffrr.git libs,zebra: remove zapi nhg encode and decode public apis The raw zapi apis to encode and decode NHGs don't need to be public; also add a little more validity-checking. Signed-off-by: Mark Stapp --- diff --git a/lib/zclient.c b/lib/zclient.c index f16c94369b..bfdf4971bb 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -996,7 +996,7 @@ done: return ret; } -int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) +static int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) { int i; @@ -1007,6 +1007,13 @@ int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) return -1; } + if (api_nhg->nexthop_num >= MULTIPATH_NUM || + api_nhg->backup_nexthop_num >= MULTIPATH_NUM) { + flog_err(EC_LIB_ZAPI_ENCODE, + "%s: zapi NHG encode with invalid input\n", __func__); + return -1; + } + stream_reset(s); zclient_create_header(s, cmd, VRF_DEFAULT); @@ -1024,7 +1031,6 @@ int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) zapi_nexthop_encode(s, &api_nhg->nexthops[i], 0, 0); /* Backup nexthops */ - stream_putw(s, api_nhg->backup_nexthop_num); for (i = 0; i < api_nhg->backup_nexthop_num; i++) diff --git a/lib/zclient.h b/lib/zclient.h index 57bad7c2e6..cf52ea91a0 100644 --- a/lib/zclient.h +++ b/lib/zclient.h @@ -1021,9 +1021,7 @@ bool zapi_ipset_notify_decode(struct stream *s, uint32_t *unique, enum zapi_ipset_notify_owner *note); - -extern int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg); -extern int zapi_nhg_decode(struct stream *s, int cmd, struct zapi_nhg *api_nhg); +/* Nexthop-group message apis */ extern enum zclient_send_status zclient_nhg_send(struct zclient *zclient, int cmd, struct zapi_nhg *api_nhg); diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index 90c6a24e7b..a62e020e4a 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -62,6 +62,8 @@ #include "zebra/zebra_opaque.h" #include "zebra/zebra_srte.h" +static int zapi_nhg_decode(struct stream *s, int cmd, struct zapi_nhg *api_nhg); + /* Encoding helpers -------------------------------------------------------- */ static void zserv_encode_interface(struct stream *s, struct interface *ifp) @@ -1742,7 +1744,7 @@ static bool zapi_read_nexthops(struct zserv *client, struct prefix *p, return true; } -int zapi_nhg_decode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) +static int zapi_nhg_decode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) { uint16_t i; struct zapi_nexthop *znh;