mirror of
https://github.com/bgp/bgpq4
synced 2025-02-28 08:53:11 +00:00
openbgpd 'deny any any' shall be avoided.
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -1,5 +1,7 @@
|
|||||||
untagged yet (2017-06-12)
|
untagged yet (2017-06-14)
|
||||||
- OpenBSD (and possibly others) need <sys/select.h>
|
- OpenBSD (and possibly others) need <sys/select.h>
|
||||||
|
- openbgpd output shall not emit 'deny any from any' in case of empty
|
||||||
|
prefix-list. New flag -a <asn> introduced to allow peer-as indication.
|
||||||
|
|
||||||
0.1.35-rc (2017-30-05)
|
0.1.35-rc (2017-30-05)
|
||||||
- Nokia SR OS (formerly Alcatel-Lucent) support. Based on submission by
|
- Nokia SR OS (formerly Alcatel-Lucent) support. Based on submission by
|
||||||
|
|||||||
5
bgpq3.c
5
bgpq3.c
@@ -137,7 +137,7 @@ main(int argc, char* argv[])
|
|||||||
if (getenv("IRRD_SOURCES"))
|
if (getenv("IRRD_SOURCES"))
|
||||||
expander.sources=getenv("IRRD_SOURCES");
|
expander.sources=getenv("IRRD_SOURCES");
|
||||||
|
|
||||||
while((c=getopt(argc,argv,"2346AbBdDEF:S:jJf:l:L:m:M:NW:Ppr:R:G:Th:Xs"))
|
while((c=getopt(argc,argv,"2346a:AbBdDEF:S:jJf:l:L:m:M:NW:Ppr:R:G:Th:Xs"))
|
||||||
!=EOF) {
|
!=EOF) {
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case '2':
|
case '2':
|
||||||
@@ -163,6 +163,9 @@ main(int argc, char* argv[])
|
|||||||
expander.family=AF_INET6;
|
expander.family=AF_INET6;
|
||||||
expander.tree->family=AF_INET6;
|
expander.tree->family=AF_INET6;
|
||||||
break;
|
break;
|
||||||
|
case 'a':
|
||||||
|
parseasnumber(&expander,optarg);
|
||||||
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
if(aggregate) debug_aggregation++;
|
if(aggregate) debug_aggregation++;
|
||||||
aggregate=1;
|
aggregate=1;
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ bgpq3_print_juniper_oaspath(FILE* f, struct bgpq_expander* b)
|
|||||||
int
|
int
|
||||||
bgpq3_print_openbgpd_oaspath(FILE* f, struct bgpq_expander* b)
|
bgpq3_print_openbgpd_oaspath(FILE* f, struct bgpq_expander* b)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k, lineNo=0;
|
||||||
|
|
||||||
for(k=0;k<65536;k++) {
|
for(k=0;k<65536;k++) {
|
||||||
if(!b->asn32s[k]) continue;
|
if(!b->asn32s[k]) continue;
|
||||||
@@ -315,11 +315,15 @@ bgpq3_print_openbgpd_oaspath(FILE* f, struct bgpq_expander* b)
|
|||||||
for(i=0;i<8192;i++) {
|
for(i=0;i<8192;i++) {
|
||||||
for(j=0;j<8;j++) {
|
for(j=0;j<8;j++) {
|
||||||
if(b->asn32s[k][i]&(0x80>>j)) {
|
if(b->asn32s[k][i]&(0x80>>j)) {
|
||||||
fprintf(f, "%s%u%s%u\n", "allow to AS ", b->asnumber, " AS ", k*65536+i*8+j);
|
fprintf(f, "allow to AS %u AS %u\n", b->asnumber,
|
||||||
|
k*65536+i*8+j);
|
||||||
|
lineNo++;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
if(!lineNo)
|
||||||
|
fprintf(f, "deny to AS %u\n", b->asnumber);
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -615,7 +619,7 @@ checkSon:
|
|||||||
int
|
int
|
||||||
bgpq3_print_openbgpd_aspath(FILE* f, struct bgpq_expander* b)
|
bgpq3_print_openbgpd_aspath(FILE* f, struct bgpq_expander* b)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k, lineNo=0;
|
||||||
|
|
||||||
for(k=0;k<65536;k++) {
|
for(k=0;k<65536;k++) {
|
||||||
if(!b->asn32s[k]) continue;
|
if(!b->asn32s[k]) continue;
|
||||||
@@ -623,11 +627,15 @@ bgpq3_print_openbgpd_aspath(FILE* f, struct bgpq_expander* b)
|
|||||||
for(i=0;i<8192;i++) {
|
for(i=0;i<8192;i++) {
|
||||||
for(j=0;j<8;j++) {
|
for(j=0;j<8;j++) {
|
||||||
if(b->asn32s[k][i]&(0x80>>j)) {
|
if(b->asn32s[k][i]&(0x80>>j)) {
|
||||||
fprintf(f, "%s%u%s%u\n", "allow from AS ", b->asnumber, " AS ", k*65536+i*8+j);
|
fprintf(f, "allow from AS %u AS %u\n", b->asnumber,
|
||||||
|
k*65536+i*8+j);
|
||||||
|
lineNo++;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
if(!lineNo)
|
||||||
|
fprintf(f, "deny from AS %u\n", b->asnumber);
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -861,6 +869,7 @@ bgpq3_print_juniper_routefilter(FILE* f, struct bgpq_expander* b)
|
|||||||
int
|
int
|
||||||
bgpq3_print_openbgpd_prefixlist(FILE* f, struct bgpq_expander* b)
|
bgpq3_print_openbgpd_prefixlist(FILE* f, struct bgpq_expander* b)
|
||||||
{
|
{
|
||||||
|
bname=b->name ? b->name : "NN";
|
||||||
if (!sx_radix_tree_empty(b->tree)) {
|
if (!sx_radix_tree_empty(b->tree)) {
|
||||||
if(b->name){
|
if(b->name){
|
||||||
if(strcmp(b->name, "NN") != 0) {
|
if(strcmp(b->name, "NN") != 0) {
|
||||||
@@ -877,8 +886,9 @@ bgpq3_print_openbgpd_prefixlist(FILE* f, struct bgpq_expander* b)
|
|||||||
}
|
}
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
} else {
|
} else {
|
||||||
fprintf(f, "# generated prefix-list %s (AS %u) is empty\n", bname, b->asnumber);
|
fprintf(f, "# generated prefix-list %s (AS %u) is empty\n", bname,
|
||||||
fprintf(f, "deny from AS %u\n", b->asnumber);
|
b->asnumber);
|
||||||
|
fprintf(f, "%sdeny from AS %u\n", b->asnumber ? "": "#", b->asnumber);
|
||||||
};
|
};
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user