mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 01:31:55 +00:00
Channelize: rt_notify arg conversion table -> channel
This commit is contained in:
parent
0c8c8151fc
commit
4bdf1881dc
@ -189,7 +189,7 @@ void ifa_notify(struct proto *p, unsigned flags, struct ifa *a)
|
|||||||
/**
|
/**
|
||||||
* rt_notify - notify instance about routing table change
|
* rt_notify - notify instance about routing table change
|
||||||
* @p: protocol instance
|
* @p: protocol instance
|
||||||
* @table: a routing table
|
* @channel: notifying channel
|
||||||
* @net: a network entry
|
* @net: a network entry
|
||||||
* @new: new route for the network
|
* @new: new route for the network
|
||||||
* @old: old route for the network
|
* @old: old route for the network
|
||||||
|
@ -184,7 +184,7 @@ struct proto {
|
|||||||
|
|
||||||
void (*if_notify)(struct proto *, unsigned flags, struct iface *i);
|
void (*if_notify)(struct proto *, unsigned flags, struct iface *i);
|
||||||
void (*ifa_notify)(struct proto *, unsigned flags, struct ifa *a);
|
void (*ifa_notify)(struct proto *, unsigned flags, struct ifa *a);
|
||||||
void (*rt_notify)(struct proto *, struct rtable *table, struct network *net, struct rte *new, struct rte *old, struct ea_list *attrs);
|
void (*rt_notify)(struct proto *, struct channel *, struct network *net, struct rte *new, struct rte *old, struct ea_list *attrs);
|
||||||
void (*neigh_notify)(struct neighbor *neigh);
|
void (*neigh_notify)(struct neighbor *neigh);
|
||||||
struct ea_list *(*make_tmp_attrs)(struct rte *rt, struct linpool *pool);
|
struct ea_list *(*make_tmp_attrs)(struct rte *rt, struct linpool *pool);
|
||||||
void (*store_tmp_attrs)(struct rte *rt, struct ea_list *attrs);
|
void (*store_tmp_attrs)(struct rte *rt, struct ea_list *attrs);
|
||||||
|
@ -481,18 +481,18 @@ do_rt_notify(struct channel *c, net *net, rte *new, rte *old, ea_list *tmpa, int
|
|||||||
rte_trace_out(D_ROUTES, p, old, "removed");
|
rte_trace_out(D_ROUTES, p, old, "removed");
|
||||||
}
|
}
|
||||||
if (!new)
|
if (!new)
|
||||||
p->rt_notify(p, c->table, net, NULL, old, NULL);
|
p->rt_notify(p, c, net, NULL, old, NULL);
|
||||||
else if (tmpa)
|
else if (tmpa)
|
||||||
{
|
{
|
||||||
ea_list *t = tmpa;
|
ea_list *t = tmpa;
|
||||||
while (t->next)
|
while (t->next)
|
||||||
t = t->next;
|
t = t->next;
|
||||||
t->next = new->attrs->eattrs;
|
t->next = new->attrs->eattrs;
|
||||||
p->rt_notify(p, c->table, net, new, old, tmpa);
|
p->rt_notify(p, c, net, new, old, tmpa);
|
||||||
t->next = NULL;
|
t->next = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
p->rt_notify(p, c->table, net, new, old, new->attrs->eattrs);
|
p->rt_notify(p, c, net, new, old, new->attrs->eattrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -552,7 +552,7 @@ rt_notify_basic(struct channel *c, net *net, rte *new0, rte *old0, int refeed)
|
|||||||
|
|
||||||
#ifdef CONFIG_PIPE
|
#ifdef CONFIG_PIPE
|
||||||
if ((p->proto == &proto_pipe) && !new0 && (p != old0->sender->proto))
|
if ((p->proto == &proto_pipe) && !new0 && (p != old0->sender->proto))
|
||||||
p->rt_notify(p, c->table, net, NULL, old0, NULL);
|
p->rt_notify(p, c, net, NULL, old0, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -1241,7 +1241,7 @@ find_surrogate_fwaddr(struct ospf_proto *p, struct ospf_area *oa)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ospf_rt_notify(struct proto *P, rtable *tbl UNUSED, net *n, rte *new, rte *old UNUSED, ea_list *ea)
|
ospf_rt_notify(struct proto *P, struct channel *ch UNUSED, net *n, rte *new, rte *old UNUSED, ea_list *ea)
|
||||||
{
|
{
|
||||||
struct ospf_proto *p = (struct ospf_proto *) P;
|
struct ospf_proto *p = (struct ospf_proto *) P;
|
||||||
struct ospf_area *oa = NULL; /* non-NULL for NSSA-LSA */
|
struct ospf_area *oa = NULL; /* non-NULL for NSSA-LSA */
|
||||||
|
@ -188,7 +188,7 @@ void ospf_originate_sum_net_lsa(struct ospf_proto *p, struct ospf_area *oa, ort
|
|||||||
void ospf_originate_sum_rt_lsa(struct ospf_proto *p, struct ospf_area *oa, u32 drid, int metric, u32 options);
|
void ospf_originate_sum_rt_lsa(struct ospf_proto *p, struct ospf_area *oa, u32 drid, int metric, u32 options);
|
||||||
void ospf_originate_ext_lsa(struct ospf_proto *p, struct ospf_area *oa, ort *nf, u8 mode, u32 metric, u32 ebit, ip_addr fwaddr, u32 tag, int pbit);
|
void ospf_originate_ext_lsa(struct ospf_proto *p, struct ospf_area *oa, ort *nf, u8 mode, u32 metric, u32 ebit, ip_addr fwaddr, u32 tag, int pbit);
|
||||||
|
|
||||||
void ospf_rt_notify(struct proto *P, rtable *tbl, net *n, rte *new, rte *old, ea_list *attrs);
|
void ospf_rt_notify(struct proto *P, struct channel *ch, net *n, rte *new, rte *old, ea_list *attrs);
|
||||||
void ospf_update_topology(struct ospf_proto *p);
|
void ospf_update_topology(struct ospf_proto *p);
|
||||||
|
|
||||||
struct top_hash_entry *ospf_hash_find(struct top_graph *, u32 domain, u32 lsa, u32 rtr, u32 type);
|
struct top_hash_entry *ospf_hash_find(struct top_graph *, u32 domain, u32 lsa, u32 rtr, u32 type);
|
||||||
|
@ -44,10 +44,10 @@
|
|||||||
#include "pipe.h"
|
#include "pipe.h"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pipe_rt_notify(struct proto *P, rtable *src_table, net *n, rte *new, rte *old, ea_list *attrs)
|
pipe_rt_notify(struct proto *P, struct channel *src_ch, net *n, rte *new, rte *old, ea_list *attrs)
|
||||||
{
|
{
|
||||||
struct pipe_proto *p = (void *) P;
|
struct pipe_proto *p = (void *) P;
|
||||||
struct channel *dst = (src_table == p->pri->table) ? p->sec : p->pri;
|
struct channel *dst = (src_ch == p->pri) ? p->sec : p->pri;
|
||||||
struct rte_src *src;
|
struct rte_src *src;
|
||||||
|
|
||||||
net *nn;
|
net *nn;
|
||||||
@ -89,9 +89,9 @@ pipe_rt_notify(struct proto *P, rtable *src_table, net *n, rte *new, rte *old, e
|
|||||||
src = old->attrs->src;
|
src = old->attrs->src;
|
||||||
}
|
}
|
||||||
|
|
||||||
src_table->pipe_busy = 1;
|
src_ch->table->pipe_busy = 1;
|
||||||
rte_update2(dst, nn, e, src);
|
rte_update2(dst, nn, e, src);
|
||||||
src_table->pipe_busy = 0;
|
src_ch->table->pipe_busy = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -281,7 +281,7 @@ radv_import_control(struct proto *p, rte **new, ea_list **attrs UNUSED, struct l
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
radv_rt_notify(struct proto *p, rtable *tbl UNUSED, net *n, rte *new, rte *old UNUSED, ea_list *attrs UNUSED)
|
radv_rt_notify(struct proto *p, struct channel *ch UNUSED, net *n, rte *new, rte *old UNUSED, ea_list *attrs UNUSED)
|
||||||
{
|
{
|
||||||
struct proto_radv *ra = (struct proto_radv *) p;
|
struct proto_radv *ra = (struct proto_radv *) p;
|
||||||
struct radv_config *cf = (struct radv_config *) (p->cf);
|
struct radv_config *cf = (struct radv_config *) (p->cf);
|
||||||
|
@ -309,7 +309,7 @@ rip_withdraw_rte(struct rip_proto *p, net_addr *n, struct rip_neighbor *from)
|
|||||||
* it into our data structures.
|
* it into our data structures.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
rip_rt_notify(struct proto *P, struct rtable *table UNUSED, struct network *net, struct rte *new,
|
rip_rt_notify(struct proto *P, struct channel *ch UNUSED, struct network *net, struct rte *new,
|
||||||
struct rte *old UNUSED, struct ea_list *attrs)
|
struct rte *old UNUSED, struct ea_list *attrs)
|
||||||
{
|
{
|
||||||
struct rip_proto *p = (struct rip_proto *) P;
|
struct rip_proto *p = (struct rip_proto *) P;
|
||||||
|
@ -1014,7 +1014,7 @@ krt_import_control(struct proto *P, rte **new, ea_list **attrs, struct linpool *
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
krt_rt_notify(struct proto *P, struct rtable *table UNUSED, net *net,
|
krt_rt_notify(struct proto *P, struct channel *ch UNUSED, net *net,
|
||||||
rte *new, rte *old, struct ea_list *eattrs)
|
rte *new, rte *old, struct ea_list *eattrs)
|
||||||
{
|
{
|
||||||
struct krt_proto *p = (struct krt_proto *) P;
|
struct krt_proto *p = (struct krt_proto *) P;
|
||||||
|
Loading…
Reference in New Issue
Block a user