mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-12 09:52:27 +00:00
vtysh: Ignore end
when parsing frr.conf
If we have `end` at the end of the frr.conf, then we never execute XFRR_end_configuration command, and start/end markers do not work. This leads to for example waiting BGP configuration parsing thread to hang, and the peers are in shutdown state until the timer expires. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
parent
b6754b74ef
commit
ce2e1a0ed8
@ -886,10 +886,23 @@ int vtysh_config_from_file(struct vty *vty, FILE *fp)
|
|||||||
int lineno = 0;
|
int lineno = 0;
|
||||||
/* once we have an error, we remember & return that */
|
/* once we have an error, we remember & return that */
|
||||||
int retcode = CMD_SUCCESS;
|
int retcode = CMD_SUCCESS;
|
||||||
|
char *vty_buf_copy = XCALLOC(MTYPE_VTYSH_CMD, VTY_BUFSIZ);
|
||||||
|
char *vty_buf_trimmed = NULL;
|
||||||
|
|
||||||
while (fgets(vty->buf, VTY_BUFSIZ, fp)) {
|
while (fgets(vty->buf, VTY_BUFSIZ, fp)) {
|
||||||
lineno++;
|
lineno++;
|
||||||
|
|
||||||
|
strlcpy(vty_buf_copy, vty->buf, VTY_BUFSIZ);
|
||||||
|
vty_buf_trimmed = trim(vty_buf_copy);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ignore the "end" lines, we will generate these where
|
||||||
|
* appropriate, otherwise we never execute
|
||||||
|
* XFRR_end_configuration, and start/end markers do not work.
|
||||||
|
*/
|
||||||
|
if (strmatch(vty_buf_trimmed, "end"))
|
||||||
|
continue;
|
||||||
|
|
||||||
ret = command_config_read_one_line(vty, &cmd, lineno, 1);
|
ret = command_config_read_one_line(vty, &cmd, lineno, 1);
|
||||||
|
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
@ -956,6 +969,8 @@ int vtysh_config_from_file(struct vty *vty, FILE *fp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XFREE(MTYPE_VTYSH_CMD, vty_buf_copy);
|
||||||
|
|
||||||
return (retcode);
|
return (retcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user