attr_optadd(attrs, ATTR_OPTIONAL, ATTR_ORIGINATOR_ID,
attr_optadd(asp, ATTR_OPTIONAL, ATTR_ORIGINATOR_ID,
rde_reflector(struct rde_peer *peer, struct attr_flags *attrs){	struct attr	*a;	u_int16_t	 len;	/* check for originator id if eq router_id drop */	if ((a = attr_optget(attrs, ATTR_ORIGINATOR_ID)) != NULL) {		if (memcmp(&conf->bgpid, a->data, sizeof(conf->bgpid)) == 0)			/* this is coming from myself */			return (0);	} else if ((conf->flags & BGPD_FLAG_REFLECTOR) &&	    attr_optadd(attrs, ATTR_OPTIONAL, ATTR_ORIGINATOR_ID,	    peer->conf.ebgp == 0 ? &peer->remote_bgpid : &conf->bgpid,	    sizeof(u_int32_t)) == -1)		fatalx("attr_optadd failed but impossible");	/* check for own id in the cluster list */	if (conf->flags & BGPD_FLAG_REFLECTOR) {		if ((a = attr_optget(attrs, ATTR_CLUSTER_LIST)) != NULL) {			for (len = 0; len < a->len;			    len += sizeof(conf->clusterid))				/* check if coming from my cluster */				if (memcmp(&conf->clusterid, a->data + len,				    sizeof(conf->clusterid)) == 0)					return (0);			/* prepend own clusterid */			if ((a->data = realloc(a->data, a->len +			    sizeof(conf->clusterid))) == NULL)				fatal("rde_reflector");			memmove(a->data + sizeof(conf->clusterid),			    a->data, a->len);			a->len += sizeof(conf->clusterid);			memcpy(a->data, &conf->clusterid,			    sizeof(conf->clusterid));		} else if (attr_optadd(attrs, ATTR_OPTIONAL, ATTR_CLUSTER_LIST,		    &conf->clusterid, sizeof(conf->clusterid)) == -1)			fatalx("attr_optadd failed but impossible");	}	return (1);}