Handle the blackhole well-known community in bgpctl as well (print it
authorsthen <sthen@openbsd.org>
Sun, 11 Oct 2015 19:53:57 +0000 (19:53 +0000)
committersthen <sthen@openbsd.org>
Sun, 11 Oct 2015 19:53:57 +0000 (19:53 +0000)
symbolically, and don't deny its use in 'bgpctl sh rib comm 65535:6666').
ok phessler@

usr.sbin/bgpctl/bgpctl.c
usr.sbin/bgpctl/parser.c

index 233e9d9..ea3c5c2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bgpctl.c,v 1.182 2015/09/16 20:25:41 stsp Exp $ */
+/*     $OpenBSD: bgpctl.c,v 1.183 2015/10/11 19:53:57 sthen Exp $ */
 
 /*
  * Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
@@ -1466,6 +1466,9 @@ show_community(u_char *data, u_int16_t len)
                        case COMMUNITY_NO_PEER:
                                printf("NO_PEER");
                                break;
+                       case COMMUNITY_BLACKHOLE:
+                               printf("BLACKHOLE");
+                               break;
                        default:
                                printf("WELLKNOWN:%hu", v);
                                break;
index 7c51df9..72ddca0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parser.c,v 1.72 2015/10/11 19:21:44 phessler Exp $ */
+/*     $OpenBSD: parser.c,v 1.73 2015/10/11 19:53:57 sthen Exp $ */
 
 /*
  * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -914,6 +914,10 @@ parse_community(const char *word, struct parse_result *r)
                as = COMMUNITY_WELLKNOWN;
                type = COMMUNITY_NO_PEER;
                goto done;
+       } else if (strcasecmp(word, "BLACKHOLE") == 0) {
+               as = COMMUNITY_WELLKNOWN;
+               type = COMMUNITY_BLACKHOLE;
+               goto done;
        }
 
        if ((p = strchr(word, ':')) == NULL) {
@@ -935,6 +939,7 @@ done:
                case COMMUNITY_NO_EXPORT:
                case COMMUNITY_NO_ADVERTISE:
                case COMMUNITY_NO_EXPSUBCONFED:
+               case COMMUNITY_BLACKHOLE:
                        /* valid */
                        break;
                default: