Download raw body.
rpki-client: remove bird1, add bird3
On Fri, Jan 03, 2025 at 01:33:38AM +0000, Job Snijders wrote:
> On Fri, Dec 20, 2024 at 04:31:22PM +0000, Stuart Henderson wrote:
> > On 2024/12/19 16:31, Job Snijders wrote:
> > > Remove BIRD 1 output, because BIRD 1 no longer is maintained &
> > > supported. While there, add BIRD 3 support, which has ASPA.
> >
> > 2.16 has ASPA too. For simplicity bird3/output_bird3 probably do
> > make sense, but would it be worth a quick note in the manual?
> >
> > > .Pa bird
> > > (for bird2)
> > > +.Pa bird3
> > > +(for bird3)
> >
> > (for bird 2.16 or newer)
>
> Ok, let's simplify things and output just one BIRD file while
> documenting 2.16 or higher is required.
>
> The below works with bird2 and bird3 in ports.
deraadt@ suggested to move faster. I too see benefits to focus on only
supporting modern versions of BIRD. -T essentially is a kludge to
support older versions, so let's remove it right away. With this, the
changes since the last portable release are:
* Remove bird1 output, BIRD v1 is deprecated
* Remove -T option which was used to customize the BIRD table names
* Add ASPA table to bird output, v2.16+ is required going forward
OK?
Kind regards,
Job
Index: extern.h
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/extern.h,v
diff -u -p -r1.235 extern.h
--- extern.h 2 Jan 2025 12:29:30 -0000 1.235
+++ extern.h 3 Jan 2025 01:59:25 -0000
@@ -969,9 +969,7 @@ int outputfiles(struct vrp_tree *v, st
int outputheader(FILE *, struct stats *);
int output_bgpd(FILE *, struct vrp_tree *, struct brk_tree *,
struct vap_tree *, struct vsp_tree *, struct stats *);
-int output_bird2(FILE *, struct vrp_tree *, struct brk_tree *,
- struct vap_tree *, struct vsp_tree *, struct stats *);
-int output_bird3(FILE *, struct vrp_tree *, struct brk_tree *,
+int output_bird(FILE *, struct vrp_tree *, struct brk_tree *,
struct vap_tree *, struct vsp_tree *, struct stats *);
int output_csv(FILE *, struct vrp_tree *, struct brk_tree *,
struct vap_tree *, struct vsp_tree *, struct stats *);
Index: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
diff -u -p -r1.277 main.c
--- main.c 2 Jan 2025 17:04:06 -0000 1.277
+++ main.c 3 Jan 2025 01:59:25 -0000
@@ -63,8 +63,6 @@ static struct filepath_tree fpt = RB_INI
static struct msgbuf *procq, *rsyncq, *httpq, *rrdpq;
static int cachefd, outdirfd;
-const char *bird_tablename = "ROAS";
-
int verbose;
int noop;
int excludeas0 = 1;
@@ -1016,7 +1014,7 @@ main(int argc, char *argv[])
err(1, "pledge");
while ((c =
- getopt(argc, argv, "0Ab:Bcd:e:fH:jmnoP:Rs:S:t:T:vVx")) != -1)
+ getopt(argc, argv, "0Ab:Bcd:e:fH:jmnoP:Rs:S:t:vVx")) != -1)
switch (c) {
case '0':
excludeas0 = 0;
@@ -1085,11 +1083,6 @@ main(int argc, char *argv[])
err(1, "too many tal files specified");
tals[talsz++] = optarg;
break;
- case 'T':
- warnx("-T is deprecated and will be removed in version"
- " 9.5. See -B in the manual for table names.");
- bird_tablename = optarg;
- break;
case 'v':
verbose++;
break;
@@ -1562,8 +1555,8 @@ usage:
"usage: rpki-client [-0ABcjmnoRVvx] [-b sourceaddr] [-d cachedir]"
" [-e rsync_prog]\n"
" [-H fqdn] [-P epoch] [-S skiplist] [-s timeout]"
- " [-T table]\n"
- " [-t tal] [outputdir]\n"
+ " [-t tal]\n"
+ " [outputdir]\n"
" rpki-client [-Vv] [-d cachedir] [-j] [-t tal] -f file ..."
"\n");
return 1;
Index: output-bird.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/output-bird.c,v
diff -u -p -r1.20 output-bird.c
--- output-bird.c 2 Jan 2025 12:29:30 -0000 1.20
+++ output-bird.c 3 Jan 2025 01:59:25 -0000
@@ -21,70 +21,22 @@
#include "extern.h"
int
-output_bird2(FILE *out, struct vrp_tree *vrps, struct brk_tree *brks,
+output_bird(FILE *out, struct vrp_tree *vrps, struct brk_tree *brks,
struct vap_tree *vaps, struct vsp_tree *vsps, struct stats *st)
{
- extern const char *bird_tablename;
- struct vrp *v;
- time_t now = get_current_time();
-
- if (outputheader(out, st) < 0)
- return -1;
-
- if (fprintf(out, "\ndefine force_roa_table_update = %lld;\n\n"
- "roa4 table %s4;\nroa6 table %s6;\n\n"
- "protocol static {\n\troa4 { table %s4; };\n\n",
- (long long)now, bird_tablename, bird_tablename,
- bird_tablename) < 0)
- return -1;
-
- RB_FOREACH(v, vrp_tree, vrps) {
- char buf[64];
-
- if (v->afi == AFI_IPV4) {
- ip_addr_print(&v->addr, v->afi, buf, sizeof(buf));
- if (fprintf(out, "\troute %s max %u as %u;\n", buf,
- v->maxlength, v->asid) < 0)
- return -1;
- }
- }
-
- if (fprintf(out, "}\n\nprotocol static {\n\troa6 { table %s6; };\n\n",
- bird_tablename) < 0)
- return -1;
-
- RB_FOREACH(v, vrp_tree, vrps) {
- char buf[64];
-
- if (v->afi == AFI_IPV6) {
- ip_addr_print(&v->addr, v->afi, buf, sizeof(buf));
- if (fprintf(out, "\troute %s max %u as %u;\n", buf,
- v->maxlength, v->asid) < 0)
- return -1;
- }
- }
-
- if (fprintf(out, "}\n") < 0)
- return -1;
- return 0;
-}
-
-int
-output_bird3(FILE *out, struct vrp_tree *vrps, struct brk_tree *brks,
- struct vap_tree *vaps, struct vsp_tree *vsps, struct stats *st)
-{
- extern const char *bird_tablename;
struct vrp *v;
struct vap *vap;
time_t now = get_current_time();
size_t i;
+ if (fprintf(out, "# For BIRD 2.16+\n#\n") < 0)
+ return -1;
+
if (outputheader(out, st) < 0)
return -1;
if (fprintf(out, "\ndefine force_roa_table_update = %lld;\n\n"
- "roa4 table %s4;\nroa6 table %s6;\n", (long long)now,
- bird_tablename, bird_tablename) < 0)
+ "roa4 table ROAS4;\nroa6 table ROAS6;\n", (long long)now) < 0)
return -1;
if (!excludeaspa) {
@@ -92,8 +44,8 @@ output_bird3(FILE *out, struct vrp_tree
return -1;
}
- if (fprintf(out, "\nprotocol static {\n\troa4 { table %s4; };\n\n",
- bird_tablename) < 0)
+ if (fprintf(out, "\nprotocol static {\n\troa4 { table ROAS4; };\n"
+ "\n") < 0)
return -1;
RB_FOREACH(v, vrp_tree, vrps) {
@@ -107,8 +59,8 @@ output_bird3(FILE *out, struct vrp_tree
}
}
- if (fprintf(out, "}\n\nprotocol static {\n\troa6 { table %s6; };\n\n",
- bird_tablename) < 0)
+ if (fprintf(out, "}\n\nprotocol static {\n\troa6 { table ROAS6; };\n"
+ "\n") < 0)
return -1;
RB_FOREACH(v, vrp_tree, vrps) {
Index: output.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/output.c,v
diff -u -p -r1.37 output.c
--- output.c 2 Jan 2025 12:29:30 -0000 1.37
+++ output.c 3 Jan 2025 01:59:25 -0000
@@ -67,8 +67,7 @@ static const struct outputs {
struct vap_tree *, struct vsp_tree *, struct stats *);
} outputs[] = {
{ FORMAT_OPENBGPD, "openbgpd", output_bgpd },
- { FORMAT_BIRD, "bird", output_bird2 },
- { FORMAT_BIRD, "bird3", output_bird3 },
+ { FORMAT_BIRD, "bird", output_bird },
{ FORMAT_CSV, "csv", output_csv },
{ FORMAT_JSON, "json", output_json },
{ FORMAT_OMETRIC, "metrics", output_ometric },
Index: rpki-client.8
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/rpki-client.8,v
diff -u -p -r1.117 rpki-client.8
--- rpki-client.8 2 Jan 2025 17:08:32 -0000 1.117
+++ rpki-client.8 3 Jan 2025 01:59:25 -0000
@@ -29,7 +29,6 @@
.Op Fl H Ar fqdn
.Op Fl S Ar skiplist
.Op Fl s Ar timeout
-.Op Fl T Ar table
.Op Fl t Ar tal
.Op Ar outputdir
.Nm
@@ -71,13 +70,15 @@ The default is not to include them.
Exclude the ASPA-set from the output files that support it (JSON and
OpenBGPD).
.It Fl B
-Create output in the files
+Create output in the file
.Pa bird
-(for bird2)
+in the output directory suitable for BIRD internet routing daemon version
+2.16 and up.
+The validated payload table names are
+.Em ROAS4 ,
+.Em ROAS6 ,
and
-.Pa bird3
-(for bird3)
-in the output directory which is suitable for the BIRD internet routing daemon.
+.Em ASPAS .
.It Fl b Ar sourceaddr
Tell the HTTP and rsync clients to use
.Ar sourceaddr
@@ -204,16 +205,6 @@ Individual RSYNC/RRDP repositories are t
.Em timeout .
All network synchronisation tasks are aborted after seven eights of
.Em timeout .
-.It Fl T Ar table
-.Em Deprecated ,
-will be removed in
-.Nm
-version 9.5.
-For BIRD output generated with the
-.Fl B
-option use
-.Ar table
-as roa table name instead of the default 'ROAS'.
.It Fl t Ar tal
Specify a
.Em Trust Anchor Location Pq TAL
rpki-client: remove bird1, add bird3