mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Initial commit on integrated BIRD
New data types net_addr and variants (in lib/net.h) describing network addresses (prefix/pxlen). Modifications of FIB structures to handle these data types and changing everything to use these data types instead of prefix/pxlen pairs where possible. The commit is WiP, some protocols are not yet updated (BGP, Kernel), and the code contains some temporary scaffolding. Comments are welcome.
This commit is contained in:
@@ -911,8 +911,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
||||
ra.nexthops = nl_parse_multipath(p, a[RTA_MULTIPATH]);
|
||||
if (!ra.nexthops)
|
||||
{
|
||||
log(L_ERR "KRT: Received strange multipath route %I/%d",
|
||||
net->n.prefix, net->n.pxlen);
|
||||
log(L_ERR "KRT: Received strange multipath route %N", net->n.addr);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -922,8 +921,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
||||
ra.iface = if_find_by_index(oif);
|
||||
if (!ra.iface)
|
||||
{
|
||||
log(L_ERR "KRT: Received route %I/%d with unknown ifindex %u",
|
||||
net->n.prefix, net->n.pxlen, oif);
|
||||
log(L_ERR "KRT: Received route %N with unknown ifindex %u", net->n.addr, oif);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -944,8 +942,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
||||
(i->rtm_flags & RTNH_F_ONLINK) ? NEF_ONLINK : 0);
|
||||
if (!ng || (ng->scope == SCOPE_HOST))
|
||||
{
|
||||
log(L_ERR "KRT: Received route %I/%d with strange next-hop %I",
|
||||
net->n.prefix, net->n.pxlen, ra.gw);
|
||||
log(L_ERR "KRT: Received route %N with strange next-hop %I", net->n.addr, ra.gw);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1020,8 +1017,7 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
||||
|
||||
if (nl_parse_metrics(a[RTA_METRICS], metrics, ARRAY_SIZE(metrics)) < 0)
|
||||
{
|
||||
log(L_ERR "KRT: Received route %I/%d with strange RTA_METRICS attribute",
|
||||
net->n.prefix, net->n.pxlen);
|
||||
log(L_ERR "KRT: Received route %N with strange RTA_METRICS attribute", net->n.addr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -297,14 +297,14 @@ static inline void
|
||||
krt_trace_in(struct krt_proto *p, rte *e, char *msg)
|
||||
{
|
||||
if (p->p.debug & D_PACKETS)
|
||||
log(L_TRACE "%s: %I/%d: %s", p->p.name, e->net->n.prefix, e->net->n.pxlen, msg);
|
||||
log(L_TRACE "%s: %N: %s", p->p.name, e->net->n.addr, msg);
|
||||
}
|
||||
|
||||
static inline void
|
||||
krt_trace_in_rl(struct tbf *f, struct krt_proto *p, rte *e, char *msg)
|
||||
{
|
||||
if (p->p.debug & D_PACKETS)
|
||||
log_rl(f, L_TRACE "%s: %I/%d: %s", p->p.name, e->net->n.prefix, e->net->n.pxlen, msg);
|
||||
log_rl(f, L_TRACE "%s: %N: %s", p->p.name, e->net->n.addr, msg);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -347,7 +347,7 @@ krt_learn_announce_update(struct krt_proto *p, rte *e)
|
||||
net *n = e->net;
|
||||
rta *aa = rta_clone(e->attrs);
|
||||
rte *ee = rte_get_temp(aa);
|
||||
net *nn = net_get(p->p.table, n->n.prefix, n->n.pxlen);
|
||||
net *nn = net_get(p->p.table, n->n.addr);
|
||||
ee->net = nn;
|
||||
ee->pflags = 0;
|
||||
ee->pref = p->p.preference;
|
||||
@@ -358,7 +358,7 @@ krt_learn_announce_update(struct krt_proto *p, rte *e)
|
||||
static void
|
||||
krt_learn_announce_delete(struct krt_proto *p, net *n)
|
||||
{
|
||||
n = net_find(p->p.table, n->n.prefix, n->n.pxlen);
|
||||
n = net_find(p->p.table, n->n.addr);
|
||||
rte_update(&p->p, n, NULL);
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ static void
|
||||
krt_learn_scan(struct krt_proto *p, rte *e)
|
||||
{
|
||||
net *n0 = e->net;
|
||||
net *n = net_get(&p->krt_table, n0->n.prefix, n0->n.pxlen);
|
||||
net *n = net_get(&p->krt_table, n0->n.addr);
|
||||
rte *m, **mm;
|
||||
|
||||
e->attrs = rta_lookup(e->attrs);
|
||||
@@ -469,7 +469,7 @@ static void
|
||||
krt_learn_async(struct krt_proto *p, rte *e, int new)
|
||||
{
|
||||
net *n0 = e->net;
|
||||
net *n = net_get(&p->krt_table, n0->n.prefix, n0->n.pxlen);
|
||||
net *n = net_get(&p->krt_table, n0->n.addr);
|
||||
rte *g, **gg, *best, **bestp, *old_best;
|
||||
|
||||
e->attrs = rta_lookup(e->attrs);
|
||||
|
||||
Reference in New Issue
Block a user