mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Merge commit 'v2.13.1-125-g90b9e871' into mq-merge-step-2
This commit is contained in:
@@ -847,12 +847,12 @@ mpls_get_fec_by_label(struct mpls_fec_map *m, u32 label)
|
||||
}
|
||||
|
||||
struct mpls_fec *
|
||||
mpls_get_fec_by_net(struct mpls_fec_map *m, const net_addr *net, u32 path_id)
|
||||
mpls_get_fec_by_net(struct mpls_fec_map *m, const net_addr *net, u64 path_id)
|
||||
{
|
||||
if (!m->net_hash.data)
|
||||
HASH_INIT(m->net_hash, m->pool, 4);
|
||||
|
||||
u32 hash = net_hash(net) ^ u32_hash(path_id);
|
||||
u32 hash = net_hash(net) ^ u64_hash(path_id);
|
||||
struct mpls_fec *fec = HASH_FIND(m->net_hash, NET, net, path_id, hash);
|
||||
|
||||
if (fec)
|
||||
|
||||
12
nest/mpls.h
12
nest/mpls.h
@@ -126,11 +126,6 @@ struct mpls_fec {
|
||||
u32 label; /* Label for FEC */
|
||||
u32 hash; /* Hash for primary key (net / rta) */
|
||||
u32 uc; /* Number of LSPs for FEC */
|
||||
union { /* Extension part of key */
|
||||
u32 path_id; /* Source path_id */
|
||||
u32 class_id; /* Aaggregation class */
|
||||
};
|
||||
|
||||
u8 state; /* FEC state (MPLS_FEC_*) */
|
||||
u8 policy; /* Label policy (MPLS_POLICY_*) */
|
||||
|
||||
@@ -138,6 +133,11 @@ struct mpls_fec {
|
||||
|
||||
struct mpls_fec *next_k; /* Next in mpls_fec.net_hash/rta_hash */
|
||||
struct mpls_fec *next_l; /* Next in mpls_fec.label_hash */
|
||||
|
||||
union { /* Extension part of key */
|
||||
u64 path_id; /* Source path_id */
|
||||
u32 class_id; /* Aaggregation class */
|
||||
};
|
||||
union { /* Primary key */
|
||||
struct rta *rta;
|
||||
struct iface *iface;
|
||||
@@ -169,7 +169,7 @@ void mpls_fec_map_reconfigure(struct mpls_fec_map *m, struct channel *C);
|
||||
void mpls_fec_map_free(struct mpls_fec_map *m);
|
||||
struct mpls_fec *mpls_find_fec_by_label(struct mpls_fec_map *x, u32 label);
|
||||
struct mpls_fec *mpls_get_fec_by_label(struct mpls_fec_map *m, u32 label);
|
||||
struct mpls_fec *mpls_get_fec_by_net(struct mpls_fec_map *m, const net_addr *net, u32 path_id);
|
||||
struct mpls_fec *mpls_get_fec_by_net(struct mpls_fec_map *m, const net_addr *net, u64 path_id);
|
||||
struct mpls_fec *mpls_get_fec_by_rta(struct mpls_fec_map *m, const rta *src, u32 class_id);
|
||||
void mpls_free_fec(struct mpls_fec_map *x, struct mpls_fec *fec);
|
||||
int mpls_handle_rte(struct mpls_fec_map *m, const net_addr *n, rte *r, linpool *lp, struct mpls_fec **locked_fec);
|
||||
|
||||
Reference in New Issue
Block a user