With the support of AS range filtering, we need to print the configuration
accordingly.
Before :
# bgpd -dnv
[...]
deny from any AS 0
deny from any AS 0
deny from any AS 65535
deny from any AS 0
deny from any AS 0
deny from any AS 0
deny from any AS 4294967295
After :
# bgpd -dnv
[...]
deny from any AS 64496 - 64496
deny from any AS 64512 - 64512
deny from any AS 65535
deny from any AS 65536 - 65536
deny from any AS 65552 - 65552
deny from any AS 4200000000 - 4200000000
deny from any AS 4294967295
Index: printconf.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/printconf.c,v
retrieving revision 1.96
diff -u -p -r1.96 printconf.c
--- printconf.c 21 Sep 2015 09:47:15 -0000 1.96
+++ printconf.c 4 Jun 2016 20:06:52 -0000
@@ -41,6 +41,7 @@ void print_peer(struct peer_config *,
const char *print_auth_alg(u_int8_t);
const char *print_enc_alg(u_int8_t);
void print_announce(struct peer_config *, const char *);
+void print_as(struct filter_rule *);
void print_rule(struct peer *, struct filter_rule *);
const char * mrt_type(enum mrt_type);
void print_mrt(struct bgpd_config *, u_int32_t, u_int32_t,
@@ -506,6 +507,26 @@ print_announce(struct peer_config *p, co
printf("%s\tannounce %s\n", c, aid2str(aid));
}
+void print_as(struct filter_rule *r)
+{
+ switch(r->match.as.op) {
+ case OP_RANGE:
+ printf("%s - %s ", log_as(r->match.as.as_min),
+ log_as(r->match.as.as_max));
+ break;
+ case OP_XRANGE:
+ printf("%s >< %s ", log_as(r->match.as.as_min),
+ log_as(r->match.as.as_max));
+ break;
+ case OP_NE:
+ printf("!= %s ", log_as(r->match.as.as));
+ break;
+ default:
+ printf("%s ", log_as(r->match.as.as));
+ break;
+ }
+}
+
void
print_rule(struct peer *peer_l, struct filter_rule *r)
{
@@ -577,15 +598,16 @@ print_rule(struct peer *peer_l, struct f
if (r->match.as.type) {
if (r->match.as.type == AS_ALL)
- printf("AS %s ", log_as(r->match.as.as));
+ printf("AS ");
else if (r->match.as.type == AS_SOURCE)
- printf("source-as %s ", log_as(r->match.as.as));
+ printf("source-as ");
else if (r->match.as.type == AS_TRANSIT)
- printf("transit-as %s ", log_as(r->match.as.as));
+ printf("transit-as ");
else if (r->match.as.type == AS_PEER)
- printf("peer-as %s ", log_as(r->match.as.as));
+ printf("peer-as ");
else
- printf("unfluffy-as %s ", log_as(r->match.as.as));
+ printf("unfluffy-as ");
+ print_as(r);
}
if (r->match.aslen.type) {