mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2025-03-21 13:57:04 +00:00
Merge commit '5973031460372a4d695c44a9f398d516b0e5bac1' into mq-merge-step-1
This commit is contained in:
commit
bd56a41b3a
@ -476,6 +476,16 @@ test-kernel-learn:
|
|||||||
variables:
|
variables:
|
||||||
TEST_NAME: cf-kernel-learn
|
TEST_NAME: cf-kernel-learn
|
||||||
|
|
||||||
|
test-mpls-bgp:
|
||||||
|
<<: *test-base
|
||||||
|
variables:
|
||||||
|
TEST_NAME: cf-mpls-bgp
|
||||||
|
|
||||||
|
test-mpls-bgp-l3vpn:
|
||||||
|
<<: *test-base
|
||||||
|
variables:
|
||||||
|
TEST_NAME: cf-mpls-bgp-l3vpn
|
||||||
|
|
||||||
|
|
||||||
.build-birdlab-base: &build-birdlab-base
|
.build-birdlab-base: &build-birdlab-base
|
||||||
stage: build
|
stage: build
|
||||||
|
@ -1059,10 +1059,13 @@ mpls_announce_fec(struct mpls_fec_map *m, struct mpls_fec *fec, const rta *src)
|
|||||||
const u32 *labels = &src->nh.label[src->nh.labels - src->nh.labels_orig];
|
const u32 *labels = &src->nh.label[src->nh.labels - src->nh.labels_orig];
|
||||||
mpls_label_stack ms;
|
mpls_label_stack ms;
|
||||||
|
|
||||||
/* Apply the hostentry with the original labelstack */
|
/* Reconstruct the original labelstack */
|
||||||
ms.len = src->nh.labels_orig;
|
ms.len = src->nh.labels_orig;
|
||||||
memcpy(ms.stack, labels, src->nh.labels_orig * sizeof(u32));
|
memcpy(ms.stack, labels, src->nh.labels_orig * sizeof(u32));
|
||||||
rta_apply_hostentry(a, src->hostentry, &ms);
|
|
||||||
|
/* The same hostentry, but different dependent table */
|
||||||
|
struct hostentry *s = src->hostentry;
|
||||||
|
rta_set_recursive_next_hop(m->channel->table, a, s->owner, s->addr, s->link, &ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
net_addr_mpls n = NET_ADDR_MPLS(fec->label);
|
net_addr_mpls n = NET_ADDR_MPLS(fec->label);
|
||||||
|
@ -246,7 +246,8 @@ struct hostentry {
|
|||||||
ip_addr addr; /* IP address of host, part of key */
|
ip_addr addr; /* IP address of host, part of key */
|
||||||
ip_addr link; /* (link-local) IP address of host, used as gw
|
ip_addr link; /* (link-local) IP address of host, used as gw
|
||||||
if host is directly attached */
|
if host is directly attached */
|
||||||
struct rtable *tab; /* Dependent table, part of key */
|
rtable *tab; /* Dependent table, part of key */
|
||||||
|
rtable *owner; /* Nexthop owner table */
|
||||||
struct hostentry *next; /* Next in hash chain */
|
struct hostentry *next; /* Next in hash chain */
|
||||||
unsigned hash_key; /* Hash key */
|
unsigned hash_key; /* Hash key */
|
||||||
unsigned uc; /* Use count */
|
unsigned uc; /* Use count */
|
||||||
|
@ -3477,6 +3477,7 @@ rt_get_hostentry(rtable *tab, ip_addr a, ip_addr ll, rtable *dep)
|
|||||||
return he;
|
return he;
|
||||||
|
|
||||||
he = hc_new_hostentry(hc, tab->rp, a, link, dep, k);
|
he = hc_new_hostentry(hc, tab->rp, a, link, dep, k);
|
||||||
|
he->owner = tab;
|
||||||
rt_update_hostentry(tab, he);
|
rt_update_hostentry(tab, he);
|
||||||
return he;
|
return he;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user