From: Donatas Abraitis Date: Tue, 11 Jun 2019 20:29:32 +0000 (+0300) Subject: bgpd: List all groups dynamically for commands with peer-group X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F4548%2Fhead;p=mirror%2Ffrr.git bgpd: List all groups dynamically for commands with peer-group Signed-off-by: Donatas Abraitis --- diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index bdac903b99..f55bdf3ba4 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -2524,7 +2524,7 @@ static struct peer_group *listen_range_exists(struct bgp *bgp, DEFUN (bgp_listen_range, bgp_listen_range_cmd, - "bgp listen range peer-group WORD", + "bgp listen range peer-group PGNAME", "BGP specific commands\n" "Configure BGP dynamic neighbors listen range\n" "Configure BGP dynamic neighbors listen range\n" @@ -2542,7 +2542,7 @@ DEFUN (bgp_listen_range, argv_find(argv, argc, "A.B.C.D/M", &idx); argv_find(argv, argc, "X:X::X:X/M", &idx); char *prefix = argv[idx]->arg; - argv_find(argv, argc, "WORD", &idx); + argv_find(argv, argc, "PGNAME", &idx); char *peergroup = argv[idx]->arg; /* Convert IP prefix string to struct prefix. */ @@ -2594,7 +2594,7 @@ DEFUN (bgp_listen_range, DEFUN (no_bgp_listen_range, no_bgp_listen_range_cmd, - "no bgp listen range peer-group WORD", + "no bgp listen range peer-group PGNAME", NO_STR "BGP specific commands\n" "Unconfigure BGP dynamic neighbors listen range\n" @@ -2890,7 +2890,7 @@ static int peer_conf_interface_get(struct vty *vty, const char *conf_if, DEFUN (neighbor_interface_config, neighbor_interface_config_cmd, - "neighbor WORD interface [peer-group WORD]", + "neighbor WORD interface [peer-group PGNAME]", NEIGHBOR_STR "Interface name or neighbor tag\n" "Enable BGP on interface\n" @@ -2911,7 +2911,7 @@ DEFUN (neighbor_interface_config, DEFUN (neighbor_interface_config_v6only, neighbor_interface_config_v6only_cmd, - "neighbor WORD interface v6only [peer-group WORD]", + "neighbor WORD interface v6only [peer-group PGNAME]", NEIGHBOR_STR "Interface name or neighbor tag\n" "Enable BGP on interface\n" @@ -3056,7 +3056,7 @@ DEFUN (no_neighbor, DEFUN (no_neighbor_interface_config, no_neighbor_interface_config_cmd, - "no neighbor WORD interface [v6only] [peer-group WORD] [remote-as <(1-4294967295)|internal|external>]", + "no neighbor WORD interface [v6only] [peer-group PGNAME] [remote-as <(1-4294967295)|internal|external>]", NO_STR NEIGHBOR_STR "Interface name\n" @@ -3371,7 +3371,7 @@ ALIAS_HIDDEN(no_neighbor_activate, no_neighbor_activate_hidden_cmd, DEFUN (neighbor_set_peer_group, neighbor_set_peer_group_cmd, - "neighbor peer-group WORD", + "neighbor peer-group PGNAME", NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Member of the peer-group\n" @@ -3429,14 +3429,14 @@ DEFUN (neighbor_set_peer_group, } ALIAS_HIDDEN(neighbor_set_peer_group, neighbor_set_peer_group_hidden_cmd, - "neighbor peer-group WORD", + "neighbor peer-group PGNAME", NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Member of the peer-group\n" "Peer-group name\n") DEFUN (no_neighbor_set_peer_group, no_neighbor_set_peer_group_cmd, - "no neighbor peer-group WORD", + "no neighbor peer-group PGNAME", NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 @@ -3466,7 +3466,7 @@ DEFUN (no_neighbor_set_peer_group, } ALIAS_HIDDEN(no_neighbor_set_peer_group, no_neighbor_set_peer_group_hidden_cmd, - "no neighbor peer-group WORD", + "no neighbor peer-group PGNAME", NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Member of the peer-group\n" "Peer-group name\n") @@ -7122,7 +7122,7 @@ static int bgp_clear_prefix(struct vty *vty, const char *view_name, /* one clear bgp command to rule them all */ DEFUN (clear_ip_bgp_all, clear_ip_bgp_all_cmd, - "clear [ip] bgp [ VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group WORD> []|in [prefix-filter]|out>]", + "clear [ip] bgp [ VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group PGNAME> []|in [prefix-filter]|out>]", CLEAR_STR IP_STR BGP_STR @@ -7169,7 +7169,7 @@ DEFUN (clear_ip_bgp_all, if (argv_find_and_parse_afi(argv, argc, &idx, &afi)) argv_find_and_parse_safi(argv, argc, &idx, &safi); - /* <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group WORD> */ + /* <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group PGNAME> */ if (argv_find(argv, argc, "*", &idx)) { clr_sort = clear_all; } else if (argv_find(argv, argc, "A.B.C.D", &idx)) { @@ -7182,7 +7182,7 @@ DEFUN (clear_ip_bgp_all, clr_sort = clear_group; idx++; clr_arg = argv[idx]->arg; - } else if (argv_find(argv, argc, "WORD", &idx)) { + } else if (argv_find(argv, argc, "PGNAME", &idx)) { clr_sort = clear_peer; clr_arg = argv[idx]->arg; } else if (argv_find(argv, argc, "(1-4294967295)", &idx)) { diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 94aadda3d6..2768a23dbe 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -6809,7 +6809,7 @@ static void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp, } /* For swpX peers we displayed the peer-group - * via 'neighbor swpX interface peer-group WORD' */ + * via 'neighbor swpX interface peer-group PGNAME' */ if (!if_pg_printed) vty_out(vty, " neighbor %s peer-group %s\n", addr, peer->group->name); diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst index 2cea24a8bd..e0fe37af49 100644 --- a/doc/user/bgp.rst +++ b/doc/user/bgp.rst @@ -720,6 +720,30 @@ Defining Peers peers ASN is the same as mine as specified under the :clicmd:`router bgp ASN` command the connection will be denied. +.. index:: [no] bgp listen range peer-group PGNAME +.. clicmd:: [no] bgp listen range peer-group PGNAME + + Accept connections from any peers in the specified prefix. Configuration + from the specified peer-group is used to configure these peers. + +.. note:: + + When using BGP listen ranges, if the associated peer group has TCP MD5 + authentication configured, your kernel must support this on prefixes. On + Linux, this support was added in kernel version 4.14. If your kernel does + not support this feature you will get a warning in the log file, and the + listen range will only accept connections from peers without MD5 configured. + + Additionally, we have observed that when using this option at scale (several + hundred peers) the kernel may hit its option memory limit. In this situation + you will see error messages like: + + ``bgpd: sockopt_tcp_signature: setsockopt(23): Cannot allocate memory`` + + In this case you need to increase the value of the sysctl + ``net.core.optmem_max`` to allow the kernel to allocate the necessary option + memory. + .. _bgp-configuring-peers: Configuring Peers @@ -892,8 +916,8 @@ and will share updates. This command defines a new peer group. -.. index:: neighbor PEER peer-group WORD -.. clicmd:: neighbor PEER peer-group WORD +.. index:: neighbor PEER peer-group PGNAME +.. clicmd:: neighbor PEER peer-group PGNAME This command bind specific peer to peer group WORD.