bgpd: make bgp_nlri_parse_encap conform with other nlri_parse funcs
* bgp_encap.{c,h} (bgp_nlri_parse_encap) afi is already in the NLRI argument.
update or withdraw is signalled by attr being non-NULL or NULL.
* bgp_packet.c: (update_receive) fixup to match, and also make the attr
argument conform with NLRI_ATTR_ARG for correct error handling on
optional, transitive, partial, attributes.
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 26e4d8f..b8a38fa 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -1943,12 +1943,12 @@
if (mp_update.length
&& mp_update.afi == AFI_IP
&& mp_update.safi == SAFI_ENCAP)
- bgp_nlri_parse_encap (mp_update.afi, peer, &attr, &mp_update, 0);
+ bgp_nlri_parse_encap (peer, NLRI_ATTR_ARG, &mp_update);
if (mp_withdraw.length
&& mp_withdraw.afi == AFI_IP
&& mp_withdraw.safi == SAFI_ENCAP)
- bgp_nlri_parse_encap (mp_withdraw.afi, peer, &attr, &mp_withdraw, 1);
+ bgp_nlri_parse_encap (peer, NULL, &mp_withdraw);
if (! withdraw_len
&& mp_withdraw.afi == AFI_IP
@@ -1967,12 +1967,12 @@
if (mp_update.length
&& mp_update.afi == AFI_IP6
&& mp_update.safi == SAFI_ENCAP)
- bgp_nlri_parse_encap (mp_update.afi, peer, &attr, &mp_update, 0);
+ bgp_nlri_parse_encap (peer, NLRI_ATTR_ARG, &mp_update);
if (mp_withdraw.length
&& mp_withdraw.afi == AFI_IP6
&& mp_withdraw.safi == SAFI_ENCAP)
- bgp_nlri_parse_encap (mp_withdraw.afi, peer, &attr, &mp_withdraw, 1);
+ bgp_nlri_parse_encap (peer, NULL, &mp_withdraw);
if (! withdraw_len
&& mp_withdraw.afi == AFI_IP6