]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Merge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund
authorMaria Matejka <mq@ucw.cz>
Mon, 30 May 2022 14:48:17 +0000 (16:48 +0200)
committerMaria Matejka <mq@ucw.cz>
Mon, 30 May 2022 14:48:17 +0000 (16:48 +0200)
1  2 
lib/route.h
proto/babel/babel.c
proto/bgp/attrs.c
proto/ospf/rt.c
proto/rip/rip.c

diff --cc lib/route.h
Simple merge
Simple merge
Simple merge
diff --cc proto/ospf/rt.c
index 7cb541d4a0d5e038ad87dd3e5dac00a711288e40,5969b7c7c3961d0870f0958b35a925d771aa008b..900fe82cb3dd34b67e5944073141fa1a3fc87bc3
@@@ -2070,39 -2067,34 +2067,36 @@@ again1
        nf->old_tag = nf->n.tag;
        nf->old_rid = nf->n.rid;
  
-       a0.eattrs->attrs[a0.eattrs->count++] = (eattr) {
-         .id = EA_OSPF_METRIC1,
-         .type = T_INT,
-         .u.data = nf->n.metric1,
-       };
+       struct {
+         ea_list l;
+         eattr a[4];
+       } eattrs;
+       eattrs.l = (ea_list) {};
+       eattrs.a[eattrs.l.count++] =
+         EA_LITERAL_EMBEDDED(EA_OSPF_METRIC1, T_INT, 0, nf->n.metric1);
  
        if (nf->n.type == RTS_OSPF_EXT2)
-         a0.eattrs->attrs[a0.eattrs->count++] = (eattr) {
-           .id = EA_OSPF_METRIC2,
-           .type = T_INT,
-           .u.data = nf->n.metric2,
-         };
+         eattrs.a[eattrs.l.count++] =
+           EA_LITERAL_EMBEDDED(EA_OSPF_METRIC2, T_INT, 0, nf->n.metric2);
  
        if ((nf->n.type == RTS_OSPF_EXT1) || (nf->n.type == RTS_OSPF_EXT2))
-         a0.eattrs->attrs[a0.eattrs->count++] = (eattr) {
-           .id = EA_OSPF_TAG,
-           .type = T_INT,
-           .u.data = nf->n.tag,
-         };
-       a0.eattrs->attrs[a0.eattrs->count++] = (eattr) {
-         .id = EA_OSPF_ROUTER_ID,
-         .type = T_QUAD,
-         .u.data = nf->n.rid,
-       };
+         eattrs.a[eattrs.l.count++] =
+           EA_LITERAL_EMBEDDED(EA_OSPF_TAG, T_INT, 0, nf->n.tag);
+       eattrs.a[eattrs.l.count++] =
+         EA_LITERAL_EMBEDDED(EA_OSPF_ROUTER_ID, T_QUAD, 0, nf->n.rid);
+       a0.eattrs = &eattrs.l;
  
 -      rta *a = rta_lookup(&a0);
 -      rte *e = rte_get_temp(a, p->p.main_source);
 -
        rta_free(nf->old_rta);
 -      nf->old_rta = rta_clone(a);
 +      nf->old_rta = rta_lookup(&a0);
 +
 +      rte e0 = {
 +        .attrs = nf->old_rta,
 +        .src = p->p.main_source,
 +      };
  
        DBG("Mod rte type %d - %N via %I on iface %s, met %d\n",
            a0.source, nf->fn.addr, a0.gw, a0.iface ? a0.iface->name : "(none)", nf->n.metric1);
diff --cc proto/rip/rip.c
Simple merge