]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Merge commit 'b28431e557c4f63923476094a919a0630001275e' into thread-next
authorMaria Matejka <mq@ucw.cz>
Mon, 23 Jan 2023 18:36:22 +0000 (19:36 +0100)
committerMaria Matejka <mq@ucw.cz>
Mon, 23 Jan 2023 18:39:45 +0000 (19:39 +0100)
1  2 
filter/test.conf
proto/babel/babel.c
proto/rip/rip.c

index 22f5dea35107f103765101e42150c55105bdba61,930169c5dc7a46c6ee8b1fc6d9a0215065d8d914..9b24a40806b41fe61c279e8eea06a33ff5b610ac
@@@ -1626,54 -1515,6 +1626,52 @@@ bool t
        rip_metric = 14;
        unset(rip_metric);
  
-       j = babel_seqno;
 +      preference = 1234;
 +
 +      test_ca_int1 = 42;
 +      test_ca_ip2 = 1.3.5.7;
 +      test_ca_quad3 = 2.4.6.8;
 +      test_ca_bgppath4 = +empty+;
 +      test_ca_clist5 = -empty-;
 +      test_ca_eclist6 = --empty--;
 +      test_ca_lclist7 = ---empty---;
 +
 +      igp_metric = 53;
 +      babel_metric = 64;
 +      t = defined(babel_router_id);
-       t = defined(rip_from);
 +
 +      bgp_origin = ORIGIN_IGP;
 +      bgp_path = +empty+;
 +      bgp_next_hop = 3456:789a:bcde:f012::3456:789a;
 +      bgp_med = 71;
 +      bgp_local_pref = 942;
 +      t = defined(bgp_atomic_aggr);
 +      t = defined(bgp_aggregator);
 +      bgp_community = -empty-;
 +      bgp_originator_id = 9.7.5.3;
 +      bgp_cluster_list = -empty-;
 +      bgp_ext_community = --empty--;
 +      t = defined(bgp_aigp);
 +      bgp_large_community = ---empty---;
 +      t = defined(bgp_mpls_label_stack);
 +
 +      ospf_metric1 = 64;
 +      ospf_metric2 = 111;
 +      ospf_tag = 654432;
 +
 +      radv_preference = RA_PREF_LOW;
 +      radv_lifetime = 28;
 +
 +      rip_metric = 2;
 +      rip_tag = 4;
 +
 +      krt_source = 17;
 +      krt_metric = 19;
 +
 +#     krt_lock_mtu = false;
 +#     krt_lock_window = true;
 +#     krt_lock_rtt = krt_lock_rttvar && krt_lock_sstresh || krt_lock_cwnd;
 +
        accept "ok I take that";
  }
  
index 685bb1227912e8aa44f243ae0929fd35ef343c86,ecde07b3f74d32933336ac1d69a76cca83b25238..a00be9a597cb811b40c5656631960393d98c419d
@@@ -2071,37 -2072,34 +2071,38 @@@ babel_get_route_info(rte *rte, byte *bu
    if (e)
      memcpy(&rid, e->u.ptr->data, sizeof(u64));
  
 -  buf += bsprintf(buf, " (%d/%d) [%lR]", rte->attrs->pref,
 -      ea_get_int(rte->attrs->eattrs, EA_BABEL_METRIC, BABEL_INFINITY), rid);
 +  buf += bsprintf(buf, " (%d/%d) [%lR]",
 +      rt_get_preference(rte),
 +      ea_get_int(rte->attrs, &ea_babel_metric, BABEL_INFINITY), rid);
  }
  
 -static int
 -babel_get_attr(const eattr *a, byte *buf, int buflen UNUSED)
 +static void
 +babel_router_id_format(const eattr *a, byte *buf, uint len)
  {
 -  switch (a->id)
 -  {
 -  case EA_BABEL_METRIC:
 -    bsprintf(buf, "metric: %d", a->u.data);
 -    return GA_FULL;
 +  u64 rid = 0;
 +  memcpy(&rid, a->u.ptr->data, sizeof(u64));
 +  bsnprintf(buf, len, "%lR", rid);
 +}
  
 -  case EA_BABEL_ROUTER_ID:
 -  {
 -    u64 rid = 0;
 -    memcpy(&rid, a->u.ptr->data, sizeof(u64));
 -    bsprintf(buf, "router_id: %lR", rid);
 -    return GA_FULL;
 -  }
 +static struct ea_class ea_babel_metric = {
 +  .name = "babel_metric",
 +  .type = T_INT,
 +};
  
 -  case EA_BABEL_SEQNO:
 -    return GA_HIDDEN;
 +static struct ea_class ea_babel_router_id = {
 +  .name = "babel_router_id",
 +  .type = T_OPAQUE,
 +  .readonly = 1,
 +  .format = babel_router_id_format,
 +};
 +
 +static struct ea_class ea_babel_seqno = {
 +  .name = "babel_seqno",
 +  .type = T_INT,
 +  .readonly = 1,
++  .hidden = 1,
 +};
  
 -  default:
 -    return GA_UNKNOWN;
 -  }
 -}
  
  void
  babel_show_interfaces(struct proto *P, const char *iff)
diff --cc proto/rip/rip.c
index 183fc265dc298e520cf7a29afc9439d16158a1e3,5f3161ee0f64d234b260471fabd8b5f594048672..5981ffa79ace2d58c66636828c778b80c354a3f6
@@@ -1239,28 -1220,26 +1239,29 @@@ rip_get_route_info(rte *rte, byte *buf
      bsprintf(buf, " [%04x]", rt_tag);
  }
  
 -static int
 -rip_get_attr(const eattr *a, byte *buf, int buflen UNUSED)
 +static void
 +rip_tag_format(const eattr *a, byte *buf, uint buflen)
  {
 -  switch (a->id)
 -  {
 -  case EA_RIP_METRIC:
 -    bsprintf(buf, "metric: %d", a->u.data);
 -    return GA_FULL;
 +  bsnprintf(buf, buflen, "%04x", a->u.data);
 +}
  
 -  case EA_RIP_TAG:
 -    bsprintf(buf, "tag: %04x", a->u.data);
 -    return GA_FULL;
 +static struct ea_class ea_rip_metric = {
 +  .name = "rip_metric",
 +  .type = T_INT,
 +};
  
 -  case EA_RIP_FROM:
 -    return GA_HIDDEN;
 +static struct ea_class ea_rip_tag = {
 +  .name = "rip_tag",
 +  .type = T_INT,
 +  .format = rip_tag_format,
 +};
  
 -  default:
 -    return GA_UNKNOWN;
 -  }
 -}
 +static struct ea_class ea_rip_from = {
 +  .name = "rip_from",
 +  .type = T_IFACE,
 +  .readonly = 1,
++  .hidden = 1,
 +};
  
  void
  rip_show_interfaces(struct proto *P, const char *iff)