summaryrefslogtreecommitdiffstats
path: root/usr.sbin/bgpctl/parser.c
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2004-12-23 17:26:51 +0000
committerhenning <henning@openbsd.org>2004-12-23 17:26:51 +0000
commitfd71c51de4eda8172831649ce84bb02e01a19297 (patch)
treef93c7ce500042b02051b7134ebebc6b047073fa3 /usr.sbin/bgpctl/parser.c
parentintroduce getpeerbydesc(), find a peer by its description (diff)
downloadwireguard-openbsd-fd71c51de4eda8172831649ce84bb02e01a19297.tar.xz
wireguard-openbsd-fd71c51de4eda8172831649ce84bb02e01a19297.zip
allow "bgpctl neighbor" to take the peer's descr as argument as well
as its address so "bgpctl neighbor upstream1 clear" now works and you don't have to remember IPs claudio ok
Diffstat (limited to 'usr.sbin/bgpctl/parser.c')
-rw-r--r--usr.sbin/bgpctl/parser.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/usr.sbin/bgpctl/parser.c b/usr.sbin/bgpctl/parser.c
index e8b587e33e6..43bb718c1e6 100644
--- a/usr.sbin/bgpctl/parser.c
+++ b/usr.sbin/bgpctl/parser.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: parser.c,v 1.9 2004/10/26 13:12:22 henning Exp $ */
+/* $OpenBSD: parser.c,v 1.10 2004/12/23 17:26:51 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -33,7 +33,8 @@ enum token_type {
FLAG,
ASNUM,
ASTYPE,
- PREFIX
+ PREFIX,
+ PEERDESC
};
struct token {
@@ -121,6 +122,7 @@ static const struct token t_fib[] = {
static const struct token t_neighbor[] = {
{ ADDRESS, "", NONE, t_neighbor_modifiers},
+ { PEERDESC, "", NONE, t_neighbor_modifiers},
{ ENDTOKEN, "", NONE, NULL}
};
@@ -265,6 +267,16 @@ match_token(const char *word, const struct token table[])
t = &table[i];
}
break;
+ case PEERDESC:
+ if (word != NULL && strlen(word) > 0) {
+ if (strlcpy(res.peerdesc, word,
+ sizeof(res.peerdesc)) >=
+ sizeof(res.peerdesc))
+ err(1, "neighbor description too long");
+ match++;
+ t = &table[i];
+ }
+ break;
case ENDTOKEN:
break;
}
@@ -305,6 +317,9 @@ show_valid_args(const struct token table[])
case ASNUM:
fprintf(stderr, " <asnum>\n");
break;
+ case PEERDESC:
+ fprintf(stderr, " <neighbor description>\n");
+ break;
case ENDTOKEN:
break;
}
@@ -379,4 +394,3 @@ parse_asnum(const char *word, u_int16_t *asnum)
*asnum = (u_int16_t)ulval;
return (1);
}
-