int
bgp_nlri_parse_encap(
- afi_t afi,
struct peer *peer,
- struct attr *attr, /* Need even for withdraw */
- struct bgp_nlri *packet,
- int withdraw) /* 0=update, !0 = withdraw */
+ struct attr *attr,
+ struct bgp_nlri *packet)
{
u_char *pnt;
u_char *lim;
+ afi_t afi = packet->afi;
struct prefix p;
int psize = 0;
int prefixlen;
inet_ntop (p.family, &p.u.prefix, buf, BUFSIZ),
p.prefixlen);
- if (!withdraw) {
+ if (attr) {
bgp_update (peer, &p, 0, attr, afi, SAFI_ENCAP,
ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL, 0);
#if ENABLE_BGP_VNC
#define _QUAGGA_BGP_ENCAP_H
extern void bgp_encap_init (void);
-extern int bgp_nlri_parse_encap (
- afi_t,
- struct peer *,
- struct attr *,
- struct bgp_nlri *,
- int withdraw);
+extern int bgp_nlri_parse_encap (struct peer *, struct attr *, struct bgp_nlri *);
#include "bgp_encap_types.h"
#endif /* _QUAGGA_BGP_ENCAP_H */
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
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