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;