The size of an enum is compiler dependent and thus we shouldn't use
enums inside structures that represent fields of a packet.
Problem detected by the 'test_capability' unit test.
The problem was not apparent before because the 'iana_safi_t' enum didn't
exist and 'safi_t' was a typedef to uint8_t. Now we have two different
enums, 'iana_afi_t' and 'iana_safi_t', and both need to be encoded in
different ways on the wire (2 bytes vs 1 byte).
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
/* Generic MP capability data */
struct capability_mp_data {
- iana_afi_t afi;
+ uint16_t afi; /* iana_afi_t */
u_char reserved;
- iana_safi_t safi;
+ uint8_t safi; /* iana_safi_t */
};
struct capability_as4 {
stream. */
struct bgp_nlri {
/* AFI. */
- afi_t afi;
+ uint16_t afi; /* iana_afi_t */
/* SAFI. */
- safi_t safi;
+ uint8_t safi; /* iana_safi_t */
/* Pointer to NLRI byte stream. */
u_char *nlri;