static void
-rta_apply_hostentry(ea_list **to, struct hostentry_adata *head)
+rta_apply_hostentry(struct rtable_private *tab UNUSED, ea_list **to, struct hostentry_adata *head)
{
struct hostentry *he = head->he;
u32 *labels = head->labels;
return 0;
*new = *old;
- rta_apply_hostentry(&new->attrs, head);
+ RT_LOCKED(head->he->owner, tab)
+ rta_apply_hostentry(tab, &new->attrs, head);
return 1;
}
struct hostentry_adata *head = (struct hostentry_adata *) heea->u.ptr;
- rta_apply_hostentry(&r->attrs, head);
+ RT_LOCKED(head->he->owner, tab)
+ rta_apply_hostentry(tab, &r->attrs, head);
}
#ifdef CONFIG_BGP
if (!he)
{
he = hc_new_hostentry(hc, tab->rp, a, link, dep, k);
+ he->owner = RT_PUB(tab);
rt_update_hostentry(tab, he);
}
ip_addr link; /* (link-local) IP address of host, used as gw
if host is directly attached */
rtable *tab; /* Dependent table, part of key */
+ rtable *owner; /* Nexthop owner table */
struct hostentry *next; /* Next in hash chain */
unsigned hash_key; /* Hash key */
unsigned uc; /* Use count */