if (nbr->scope == SCOPE_HOST)
WITHDRAW(BAD_NEXT_HOP " - address %I is local", nbr->addr);
- a->dest = RTD_UNICAST;
- a->nh.gw = nbr->addr;
- a->nh.iface = nbr->iface;
- a->nh.flags = nbr->flags & NEF_ONLINK ? RNF_ONLINK : 0;
- a->igp_metric = c->cf->cost;
+ ea_set_attr_u32(to, &ea_gen_igp_metric, 0, c->cf->cost);
+
+ struct nexthop_adata_mpls nam;
+ memset(&nam, 0, sizeof nam);
+ nam.nhad.nh.gw = nbr->addr;
+ nam.nhad.nh.iface = nbr->iface;
++ nam.nhad.nh.flags = nbr->flags & NEF_ONLINK ? RNF_ONLINK : 0;
+ nam.nhad.ad.length = NEXTHOP_NEXT(&nam.nhad.nh) - (void *) nam.nhad.ad.data;
+ ea_set_attr_data(to, &ea_gen_nexthop, 0, nam.nhad.ad.data, nam.nhad.ad.length);
}
else /* GW_RECURSIVE */
{