]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Merge commit 'cf07d8ad79273a3bbf0617c17e438602e4b64ece' into haugesund
authorMaria Matejka <mq@ucw.cz>
Mon, 30 May 2022 14:52:38 +0000 (16:52 +0200)
committerMaria Matejka <mq@ucw.cz>
Mon, 30 May 2022 14:52:38 +0000 (16:52 +0200)
1  2 
filter/f-inst.c
lib/route.h
sysdep/bsd/krt-sock.c
sysdep/linux/netlink.c

diff --cc filter/f-inst.c
Simple merge
diff --cc lib/route.h
Simple merge
index ca7d4c55918a93d403c6f07f80277b9da04d4ec7,844b9f83b455c86a1b4cabd0db36b59cbc60e1cf..32d386930016b66634196b9eb477317e02d8297c
@@@ -577,23 -579,17 +577,16 @@@ krt_read_route(struct ks_msg *msg, stru
        }
    }
  
 - done:
 -  e = rte_get_temp(&a);
 -  e->net = net;
 + done:;
 +  rte e0 = { .attrs = &a, .net = net, };
  
-   ea_list *ea = alloca(sizeof(ea_list) + 1 * sizeof(eattr));
-   *ea = (ea_list) { .count = 1, .next = e0.attrs->eattrs };
-   e0.attrs->eattrs = ea;
-   ea->attrs[0] = (eattr) {
-     .id = EA_KRT_SOURCE,
-     .type = T_INT,
-     .u.data = src2,
-   };
 -  ea_set_attr(e->attrs->eattrs,
++  ea_set_attr(e0.attrs->eattrs,
+       EA_LITERAL_EMBEDDED(EA_KRT_SOURCE, T_INT, 0, src2));
  
    if (scan)
 -    krt_got_route(p, e, src);
 +    krt_got_route(p, &e0, src);
    else
 -    krt_got_route_async(p, e, new, src);
 +    krt_got_route_async(p, &e0, new, src);
  }
  
  static void
index 98ddd899174c8217b64b0a3b03366c93ed1b94f1,81e02b4ca30c6cb6873f653eb04d7d363cf2c91a..7702c815563128c2839b2b1aa132cfbd09ce35b4
@@@ -1577,30 -1578,29 +1577,31 @@@ nl_mergable_route(struct nl_parse_stat
  static void
  nl_announce_route(struct nl_parse_state *s)
  {
 -  rte *e = rte_get_temp(s->attrs, s->proto->p.main_source);
 -  e->net = s->net;
 +  rte e0 = {
 +    .attrs = s->attrs,
 +    .net = s->net,
 +  };
  
-   ea_list *ea = alloca(sizeof(ea_list) + 2 * sizeof(eattr));
-   *ea = (ea_list) { .count = 2, .next = e0.attrs->eattrs };
-   e0.attrs->eattrs = ea;
-   ea->attrs[0] = (eattr) {
-     .id = EA_KRT_SOURCE,
-     .type = T_INT,
-     .u.data = s->krt_proto,
-   };
-   ea->attrs[1] = (eattr) {
-     .id = EA_KRT_METRIC,
-     .type = T_INT,
-     .u.data = s->krt_metric,
+   EA_LOCAL_LIST(2) ea0 = {
 -    .l = { .count = 2, .next = e->attrs->eattrs },
++    .l = { .count = 2, .next = e0.attrs->eattrs },
+     .a[0] = (eattr) {
+       .id = EA_KRT_SOURCE,
+       .type = T_INT,
+       .u.data = s->krt_proto,
+     },
+     .a[1] = (eattr) {
+       .id = EA_KRT_METRIC,
+       .type = T_INT,
+       .u.data = s->krt_metric,
+     },
    };
  
 -  e->attrs->eattrs = &ea0.l;
++  e0.attrs->eattrs = &ea0.l;
    if (s->scan)
 -    krt_got_route(s->proto, e, s->krt_src);
 +    krt_got_route(s->proto, &e0, s->krt_src);
    else
 -    krt_got_route_async(s->proto, e, s->new, s->krt_src);
 +    krt_got_route_async(s->proto, &e0, s->new, s->krt_src);
  
    s->net = NULL;
    s->attrs = NULL;
@@@ -1912,12 -1885,9 +1883,9 @@@ nl_parse_route(struct nl_parse_state *s
    if (a[RTA_METRICS])
      {
        u32 metrics[KRT_METRICS_MAX];
-       ea_list *ea = lp_alloc(s->pool, sizeof(ea_list) + KRT_METRICS_MAX * sizeof(eattr));
-       int t, n = 0;
        if (nl_parse_metrics(a[RTA_METRICS], metrics, ARRAY_SIZE(metrics)) < 0)
          {
 -        log(L_ERR "KRT: Received route %N with strange RTA_METRICS attribute", net->n.addr);
 +        log(L_ERR "KRT: Received route %N with strange RTA_METRICS attribute", net);
          return;
        }