const struct rde_peer *peer, const struct attr_flags *attr,
const struct rde_peer *peer, const struct bgpd_addr *next,
rde_update_log(const char *message,    const struct rde_peer *peer, const struct attr_flags *attr,    const struct bgpd_addr *prefix, u_int8_t prefixlen){	char		*nexthop = NULL;	char		*p = NULL;	if (!(conf->log & BGPD_LOG_UPDATES))		return;	if (attr != NULL)		if (attr_ismp(attr)) {			if (asprintf(&nexthop, " via %s",			    log_addr(attr_mp_nexthop(attr))) == -1)				nexthop = NULL;		else			if (asprintf(&nexthop, " via %s",			    inet_ntoa(attr->nexthop)) == -1)				nexthop = NULL;		}	if (asprintf(&p, "%s/%u", log_addr(prefix), prefixlen) == -1)		p = NULL;	log_info("neighbor %s (AS%u) %s %s/%u %s",	    log_addr(&peer->conf.remote_addr), peer->conf.remote_as, message,	    p ? p : "out of memory", nexthop ? nexthop : "");	free(nexthop);	free(p);}