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 <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2017-11-06 13:04:19 -05:00
parent ec93aa120e
commit 832d0f566f
2 changed files with 13 additions and 2 deletions

View File

@ -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);

View File

@ -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;