u_int8_t	 mask2prefixlen(in_addr_t);
TAILQ_HEAD(, vertex)		 cand_list;RB_HEAD(rt_tree, rt_node)	 rt;RB_PROTOTYPE(rt_tree, rt_node, entry, rt_compare)RB_GENERATE(rt_tree, rt_node, entry, rt_compare)struct vertex			*spf_root = NULL;void		 spf_dump(struct area *);	/* XXX */void		 rt_dump_debug(void);		/* XXX */void		 cand_list_dump(void);		/* XXX */void		 calc_next_hop(struct vertex *, struct vertex *);void		 rt_update(struct in_addr, u_int8_t, struct in_addr, u_int32_t,		     struct in_addr, struct in_addr, u_int8_t, u_int8_t);void		 rt_invalidate(void);int		 linked(struct vertex *, struct vertex *);u_int8_t	 mask2prefixlen(in_addr_t);voidspf_dump(struct area *area){	struct lsa_tree	*tree = &area->lsa_tree;	struct vertex	*v;	struct vertex	*p;	/* parent */	struct in_addr	 addr;	log_debug("spf_dump:");	RB_FOREACH(v, lsa_tree, tree) {		addr.s_addr = htonl(v->ls_id);		log_debug("    id %s type %d cost %d", inet_ntoa(addr),		     v->type, v->cost);		log_debug("    nexthop: %s", inet_ntoa(v->nexthop));#if 1		log_debug("    --------------------------------------------");		p = v->prev;		while (p != NULL) {			addr.s_addr = htonl(p->ls_id);			log_debug("        id %15s type %d cost %d",			    inet_ntoa(addr), p->type, p->cost);			p = p->prev;		}	log_debug("");#endif	}	return;}