From: Donald Sharp Date: Mon, 6 Nov 2017 18:04:19 +0000 (-0500) Subject: lib: Pass the safi as a uint8_t X-Git-Tag: frr-4.0-dev~153^2~2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=832d0f566ff1d2c010ff1816d9b5e9e39e687796;p=mirror%2Ffrr.git lib: Pass the safi as a uint8_t The safi encode/decode is using 2 bytes, which may cause problems on some platforms. Let's assume that a safi is a uint8_t and work accordingly. Signed-off-by: Donald Sharp --- diff --git a/lib/zclient.c b/lib/zclient.c index ce4886efdc..6d6d44fb12 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -901,7 +901,7 @@ int zapi_route_encode(u_char cmd, struct stream *s, struct zapi_route *api) stream_putw(s, api->instance); stream_putl(s, api->flags); stream_putc(s, api->message); - stream_putw(s, api->safi); + stream_putc(s, api->safi); /* Put prefix information. */ stream_putc(s, api->prefix.family); @@ -1021,7 +1021,7 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) STREAM_GETW(s, api->instance); STREAM_GETL(s, api->flags); STREAM_GETC(s, api->message); - STREAM_GETW(s, api->safi); + STREAM_GETC(s, api->safi); /* Prefix. */ STREAM_GETC(s, api->prefix.family); diff --git a/lib/zclient.h b/lib/zclient.h index 23fe0e41f4..e9b2cb8956 100644 --- a/lib/zclient.h +++ b/lib/zclient.h @@ -235,6 +235,13 @@ struct zapi_nexthop { mpls_label_t labels[MPLS_MAX_LABELS]; }; +/* + * Some of these data structures do not map easily to + * a actual data structure size giving different compilers + * and systems. For those data structures we need + * to use the smallest available stream_getX/putX functions + * to encode/decode. + */ struct zapi_route { u_char type; u_short instance; @@ -243,6 +250,10 @@ struct zapi_route { u_char message; + /* + * This is an enum but we are going to treat it as a uint8_t + * for purpose of encoding/decoding + */ safi_t safi; struct prefix prefix;