lsa_add(nbr, dummy);
lsa_add(rde_nbr_self(nbr->area), dummy);
lsa_self(struct rde_nbr *nbr, struct lsa *new, struct vertex *v){	struct iface	*iface;	struct lsa	*dummy;	if (nbr->self)		return (0);	if (rde_router_id() == new->hdr.adv_rtr)		goto self;	if (new->hdr.type == LSA_TYPE_NETWORK)		LIST_FOREACH(iface, &nbr->area->iface_list, entry)		    if (iface->addr.s_addr == new->hdr.ls_id)			    goto self;	return (0);self:	if (v == NULL) {		/*		 * LSA is no longer announced, remove by premature aging.		 * The problem is that new may not be altered so a copy		 * needs to be added to the LSA DB first.		 */		if ((dummy = malloc(ntohs(new->hdr.len))) == NULL)			fatal("lsa_self");		memcpy(dummy, new, ntohs(new->hdr.len));		dummy->hdr.age = htons(MAX_AGE);		/*		 * The clue is that by using the remote nbr as originator		 * the dummy LSA will be reflooded via the default timeout		 * handler.		 */		lsa_add(nbr, dummy);		return (1);	}	/*	 * LSA is still originated, just reflood it. But we need to create	 * a new instance by setting the LSA sequence number equal to the	 * one of new and calling lsa_refresh(). Flooding will be done by the	 * caller.	 */	v->lsa->hdr.seq_num = new->hdr.seq_num;	lsa_refresh(v);	return (1);}