From: Maria Matejka Date: Mon, 30 May 2022 15:18:46 +0000 (+0200) Subject: Merge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund X-Git-Tag: v3.0-alpha1~171^2~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65254128e105903b6b470c6b4bb4729f56cf81bc;p=thirdparty%2Fbird.git Merge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund --- 65254128e105903b6b470c6b4bb4729f56cf81bc diff --cc filter/f-inst.c index be1c3e1da,5eacc7169..7fa1c8b8f --- a/filter/f-inst.c +++ b/filter/f-inst.c @@@ -533,12 -533,10 +533,10 @@@ switch (sa.sa_code) { - case SA_FROM: RESULT(sa.type, ip, rta->from); break; case SA_GW: RESULT(sa.type, ip, rta->nh.gw); break; - case SA_NET: RESULT(sa.type, net, (*fs->rte)->net->n.addr); break; - case SA_PROTO: RESULT(sa.type, s, (*fs->rte)->src->proto->name); break; + case SA_NET: RESULT(sa.type, net, fs->rte->net); break; + case SA_PROTO: RESULT(sa.type, s, fs->rte->src->proto->name); break; case SA_SOURCE: RESULT(sa.type, i, rta->source); break; - case SA_SCOPE: RESULT(sa.type, i, rta->scope); break; case SA_DEST: RESULT(sa.type, i, rta->dest); break; case SA_IFNAME: RESULT(sa.type, s, rta->nh.iface ? rta->nh.iface->name : ""); break; case SA_IFINDEX: RESULT(sa.type, i, rta->nh.iface ? rta->nh.iface->index : 0); break; diff --cc proto/rip/rip.c index cf186f87c,f54426061..1c7d1f1f8 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@@ -189,40 -199,30 +199,29 @@@ rip_announce_rte(struct rip_proto *p, s else { /* Unipath route */ - a0.from = rt->from->nbr->addr; a0.nh.gw = rt->next_hop; a0.nh.iface = rt->from->ifa->iface; + ea_set_attr_data(&a0.eattrs, &ea_gen_from, 0, &rt->from->nbr->addr, sizeof(ip_addr)); } - struct { - ea_list l; - eattr a[4]; - struct rip_iface_adata riad; - } ea_block = { - .l.count = ARRAY_SIZE(ea_block.a), - .a = { - EA_LITERAL_EMBEDDED(&ea_gen_preference, 0, p->p.main_channel->preference), - EA_LITERAL_EMBEDDED(&ea_rip_metric, 0, rt_metric), - EA_LITERAL_EMBEDDED(&ea_rip_tag, 0, rt_tag), - EA_LITERAL_DIRECT_ADATA(&ea_rip_from, 0, &ea_block.riad.ad), - }, - .riad = { - .ad = { .length = sizeof(struct rip_iface_adata) - sizeof(struct adata) }, - .iface = a0.nh.iface, - }, - }; + ea_set_attr_u32(&a0.eattrs, &ea_rip_tag, 0, rt_tag); - a0.eattrs = &ea_block.l; + struct rip_iface_adata riad = { + .ad = { .length = sizeof(struct rip_iface_adata) - sizeof(struct adata) }, + .iface = a0.nh.iface, + }; + ea_set_attr(&a0.eattrs, + EA_LITERAL_DIRECT_ADATA(&ea_rip_from, 0, &riad.ad)); - rta *a = rta_lookup(&a0); - rte *e = rte_get_temp(a, p->p.main_source); + rte e0 = { + .attrs = &a0, + .src = p->p.main_source, + }; - rte_update(&p->p, en->n.addr, e); + rte_update(p->p.main_channel, en->n.addr, &e0, p->p.main_source); } else - { - /* Withdraw */ - rte_update(&p->p, en->n.addr, NULL); - } + rte_update(p->p.main_channel, en->n.addr, NULL, p->p.main_source); } /** diff --cc sysdep/bsd/krt-sock.c index 32d386930,bc6b1839a..19ef2394c --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@@ -518,8 -519,8 +518,7 @@@ krt_read_route(struct ks_msg *msg, stru net = net_get(p->p.main_channel->table, &ndst); rta a = { - .src = p->p.main_source, .source = RTS_INHERIT, - .scope = SCOPE_UNIVERSE, }; /* reject/blackhole routes have also set RTF_GATEWAY,