LIST_FOREACH(area, &conf->area_list, entry) lsa_remove_invalid_sums(area);
spf_timer(int fd, short event, void *arg){	struct ospfd_conf	*conf = arg;	struct area		*area;	struct rt_node		*r;	switch (conf->spf_state) {	case SPF_IDLE:		fatalx("spf_timer: invalid state IDLE");	case SPF_HOLDQUEUE:		log_debug("spf_timer: HOLDQUEUE -> DELAY");		conf->spf_state = SPF_DELAY;		/* FALLTHROUGH */	case SPF_DELAY:		rt_invalidate();		LIST_FOREACH(area, &conf->area_list, entry)			spf_calc(area);		RB_FOREACH(r, rt_tree, &rt) {			LIST_FOREACH(area, &conf->area_list, entry)				rde_summary_update(r, area);			if (r->d_type != DT_NET)				continue;			if (r->invalid)				rde_send_delete_kroute(r);			else				rde_send_change_kroute(r);		}		start_spf_holdtimer(rdeconf);		break;	case SPF_HOLD:		log_debug("spf_timer: state HOLD -> IDLE");		conf->spf_state = SPF_IDLE;		break;	default:		fatalx("spf_timer: unknown state");	}}