diff options
| author | whitespace / reindent <invalid@invalid.invalid> | 2017-08-09 11:49:42 +0200 | 
|---|---|---|
| committer | whitespace / reindent <invalid@invalid.invalid> | 2017-08-09 12:03:17 +0200 | 
| commit | ac4d0be5874fafd14212d6007fff7495edc9b152 (patch) | |
| tree | 5e2f0d3189de928c849f9983406389ade3b098cb /vtysh/vtysh.c | |
| parent | 76a86854181c27819e5cf71b12ae1fa5ccd9e02a (diff) | |
*: reindentreindent-3.0-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'vtysh/vtysh.c')
| -rw-r--r-- | vtysh/vtysh.c | 4874 | 
1 files changed, 2209 insertions, 2665 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 84907fb63d..00968531b7 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -16,7 +16,7 @@   * You should have received a copy of the GNU General Public License   * along with GNU Zebra; see the file COPYING.  If not, write to the Free   * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA.   + * 02111-1307, USA.   */  #include <zebra.h> @@ -54,757 +54,727 @@ struct vty *vty;  char *vtysh_pager_name = NULL;  /* VTY shell client structure. */ -struct vtysh_client -{ -  int fd; -  const char *name; -  int flag; -  char path[MAXPATHLEN]; -  struct vtysh_client *next; +struct vtysh_client { +	int fd; +	const char *name; +	int flag; +	char path[MAXPATHLEN]; +	struct vtysh_client *next;  }; -struct vtysh_client vtysh_client[] = -{ -  { .fd = -1, .name = "zebra",    .flag = VTYSH_ZEBRA,    .next = NULL}, -  { .fd = -1, .name = "ripd",     .flag = VTYSH_RIPD,     .next = NULL}, -  { .fd = -1, .name = "ripngd",   .flag = VTYSH_RIPNGD,   .next = NULL}, -  { .fd = -1, .name = "ospfd",    .flag = VTYSH_OSPFD,    .next = NULL}, -  { .fd = -1, .name = "ospf6d",   .flag = VTYSH_OSPF6D,   .next = NULL}, -  { .fd = -1, .name = "ldpd",     .flag = VTYSH_LDPD,     .next = NULL}, -  { .fd = -1, .name = "bgpd",     .flag = VTYSH_BGPD,     .next = NULL}, -  { .fd = -1, .name = "isisd",    .flag = VTYSH_ISISD,    .next = NULL}, -  { .fd = -1, .name = "pimd",     .flag = VTYSH_PIMD,     .next = NULL}, -  { .fd = -1, .name = "nhrpd",    .flag = VTYSH_NHRPD,    .next = NULL}, -  { .fd = -1, .name = "watchfrr", .flag = VTYSH_WATCHFRR, .next = NULL}, +struct vtysh_client vtysh_client[] = { +	{.fd = -1, .name = "zebra", .flag = VTYSH_ZEBRA, .next = NULL}, +	{.fd = -1, .name = "ripd", .flag = VTYSH_RIPD, .next = NULL}, +	{.fd = -1, .name = "ripngd", .flag = VTYSH_RIPNGD, .next = NULL}, +	{.fd = -1, .name = "ospfd", .flag = VTYSH_OSPFD, .next = NULL}, +	{.fd = -1, .name = "ospf6d", .flag = VTYSH_OSPF6D, .next = NULL}, +	{.fd = -1, .name = "ldpd", .flag = VTYSH_LDPD, .next = NULL}, +	{.fd = -1, .name = "bgpd", .flag = VTYSH_BGPD, .next = NULL}, +	{.fd = -1, .name = "isisd", .flag = VTYSH_ISISD, .next = NULL}, +	{.fd = -1, .name = "pimd", .flag = VTYSH_PIMD, .next = NULL}, +	{.fd = -1, .name = "nhrpd", .flag = VTYSH_NHRPD, .next = NULL}, +	{.fd = -1, .name = "watchfrr", .flag = VTYSH_WATCHFRR, .next = NULL},  }; -enum vtysh_write_integrated vtysh_write_integrated = WRITE_INTEGRATED_UNSPECIFIED; +enum vtysh_write_integrated vtysh_write_integrated = +	WRITE_INTEGRATED_UNSPECIFIED; -static void -vclient_close (struct vtysh_client *vclient) +static void vclient_close(struct vtysh_client *vclient)  { -  if (vclient->fd >= 0) -    { -      fprintf(stderr, -	      "Warning: closing connection to %s because of an I/O error!\n", -	      vclient->name); -      close (vclient->fd); -      vclient->fd = -1; -    } +	if (vclient->fd >= 0) { +		fprintf(stderr, +			"Warning: closing connection to %s because of an I/O error!\n", +			vclient->name); +		close(vclient->fd); +		vclient->fd = -1; +	}  }  /* Return true if str begins with prefix, else return false */ -static int -begins_with(const char *str, const char *prefix) +static int begins_with(const char *str, const char *prefix)  { -  if (!str || !prefix) -    return 0; -  size_t lenstr = strlen(str); -  size_t lenprefix = strlen(prefix); -  if (lenprefix >  lenstr) -    return 0; -  return strncmp(str, prefix, lenprefix) == 0; +	if (!str || !prefix) +		return 0; +	size_t lenstr = strlen(str); +	size_t lenprefix = strlen(prefix); +	if (lenprefix > lenstr) +		return 0; +	return strncmp(str, prefix, lenprefix) == 0;  }  /* NB: multiplexed function:   *  if fp == NULL, this calls vtysh_config_parse_line   *  if fp != NULL, this prints lines to fp   */ -static int -vtysh_client_run (struct vtysh_client *vclient, const char *line, FILE *fp) -{ -  int ret; -  char stackbuf[4096]; -  char *buf = stackbuf; -  size_t bufsz = sizeof(stackbuf); -  char *bufvalid, *end = NULL; -  char terminator[3] = {0, 0, 0}; - -  if (vclient->fd < 0) -    return CMD_SUCCESS; - -  ret = write (vclient->fd, line, strlen (line) + 1); -  if (ret <= 0) -    goto out_err; - -  bufvalid = buf; -  do -    { -      ssize_t nread = read (vclient->fd, bufvalid, buf + bufsz - bufvalid); - -      if (nread < 0 && (errno == EINTR || errno == EAGAIN)) -        continue; - -      if (nread <= 0) -        { -          fprintf (stderr, "vtysh: error reading from %s: %s (%d)", -                   vclient->name, safe_strerror(errno), errno); -          goto out_err; -        } - -      bufvalid += nread; - -      end = memmem (buf, bufvalid - buf, terminator, sizeof(terminator)); -      if (end + sizeof(terminator) + 1 > bufvalid) -        /* found \0\0\0 but return code hasn't been read yet */ -        end = NULL; -      if (end) -        ret = end[sizeof(terminator)]; - -      while (bufvalid > buf && (end > buf || !end)) -        { -          size_t textlen = (end ? end : bufvalid) - buf; -          char *eol = memchr (buf, '\n', textlen); -          if (eol) -            /* line break */ -            *eol++ = '\0'; -          else if (end == buf) -            /* no line break, end of input, no text left before end -             * => don't insert an empty line at the end */ -            break; -          else if (end) -            /* no line break, end of input, but some text left */ -            eol = end; -          else -            /* continue reading */ -            break; - -          /* eol is at a line end now, either \n => \0 or \0\0\0 */ -          assert(eol && eol <= bufvalid); - -          if (fp) -            { -              fputs (buf, fp); -              fputc ('\n', fp); -            } -          else -            vtysh_config_parse_line (buf); - -          if (eol == end) -            /* \n\0\0\0 */ -            break; - -          memmove (buf, eol, bufvalid - eol); -          bufvalid -= eol - buf; -          if (end) -            end -= eol - buf; -        } - -      if (bufvalid == buf + bufsz) -        { -          char *new; -          bufsz *= 2; -          if (buf == stackbuf) -            { -              new = XMALLOC (MTYPE_TMP, bufsz); -              memcpy (new, stackbuf, sizeof(stackbuf)); -            } -          else -            new = XREALLOC (MTYPE_TMP, buf, bufsz); - -          bufvalid = bufvalid - buf + new; -          buf = new; -          /* if end != NULL, we won't be reading more data... */ -          assert (end == NULL); -        } -    } -  while (!end); -  goto out; +static int vtysh_client_run(struct vtysh_client *vclient, const char *line, +			    FILE *fp) +{ +	int ret; +	char stackbuf[4096]; +	char *buf = stackbuf; +	size_t bufsz = sizeof(stackbuf); +	char *bufvalid, *end = NULL; +	char terminator[3] = {0, 0, 0}; + +	if (vclient->fd < 0) +		return CMD_SUCCESS; + +	ret = write(vclient->fd, line, strlen(line) + 1); +	if (ret <= 0) +		goto out_err; + +	bufvalid = buf; +	do { +		ssize_t nread = +			read(vclient->fd, bufvalid, buf + bufsz - bufvalid); + +		if (nread < 0 && (errno == EINTR || errno == EAGAIN)) +			continue; + +		if (nread <= 0) { +			fprintf(stderr, "vtysh: error reading from %s: %s (%d)", +				vclient->name, safe_strerror(errno), errno); +			goto out_err; +		} + +		bufvalid += nread; + +		end = memmem(buf, bufvalid - buf, terminator, +			     sizeof(terminator)); +		if (end + sizeof(terminator) + 1 > bufvalid) +			/* found \0\0\0 but return code hasn't been read yet */ +			end = NULL; +		if (end) +			ret = end[sizeof(terminator)]; + +		while (bufvalid > buf && (end > buf || !end)) { +			size_t textlen = (end ? end : bufvalid) - buf; +			char *eol = memchr(buf, '\n', textlen); +			if (eol) +				/* line break */ +				*eol++ = '\0'; +			else if (end == buf) +				/* no line break, end of input, no text left +				 * before end +				 * => don't insert an empty line at the end */ +				break; +			else if (end) +				/* no line break, end of input, but some text +				 * left */ +				eol = end; +			else +				/* continue reading */ +				break; + +			/* eol is at a line end now, either \n => \0 or \0\0\0 +			 */ +			assert(eol && eol <= bufvalid); + +			if (fp) { +				fputs(buf, fp); +				fputc('\n', fp); +			} else +				vtysh_config_parse_line(buf); + +			if (eol == end) +				/* \n\0\0\0 */ +				break; + +			memmove(buf, eol, bufvalid - eol); +			bufvalid -= eol - buf; +			if (end) +				end -= eol - buf; +		} + +		if (bufvalid == buf + bufsz) { +			char *new; +			bufsz *= 2; +			if (buf == stackbuf) { +				new = XMALLOC(MTYPE_TMP, bufsz); +				memcpy(new, stackbuf, sizeof(stackbuf)); +			} else +				new = XREALLOC(MTYPE_TMP, buf, bufsz); + +			bufvalid = bufvalid - buf + new; +			buf = new; +			/* if end != NULL, we won't be reading more data... */ +			assert(end == NULL); +		} +	} while (!end); +	goto out;  out_err: -  vclient_close (vclient); -  ret = CMD_SUCCESS; +	vclient_close(vclient); +	ret = CMD_SUCCESS;  out: -  if (buf != stackbuf) -    XFREE (MTYPE_TMP, buf); -  return ret; +	if (buf != stackbuf) +		XFREE(MTYPE_TMP, buf); +	return ret;  } -static int -vtysh_client_run_all (struct vtysh_client *head_client, const char *line, -                      int continue_on_err, FILE *fp) +static int vtysh_client_run_all(struct vtysh_client *head_client, +				const char *line, int continue_on_err, FILE *fp)  { -  struct vtysh_client *client; -  int rc, rc_all = CMD_SUCCESS; +	struct vtysh_client *client; +	int rc, rc_all = CMD_SUCCESS; -  for (client = head_client; client; client = client->next) -    { -      rc = vtysh_client_run(client, line, fp); -      if (rc != CMD_SUCCESS) -        { -          if (!continue_on_err) -            return rc; -          rc_all = rc; -        } -    } -  return rc_all; +	for (client = head_client; client; client = client->next) { +		rc = vtysh_client_run(client, line, fp); +		if (rc != CMD_SUCCESS) { +			if (!continue_on_err) +				return rc; +			rc_all = rc; +		} +	} +	return rc_all;  } -static int -vtysh_client_execute (struct vtysh_client *head_client, const char *line, -                      FILE *fp) +static int vtysh_client_execute(struct vtysh_client *head_client, +				const char *line, FILE *fp)  { -  return vtysh_client_run_all (head_client, line, 0, fp); +	return vtysh_client_run_all(head_client, line, 0, fp);  } -static void -vtysh_client_config (struct vtysh_client *head_client, char *line) +static void vtysh_client_config(struct vtysh_client *head_client, char *line)  { -  vtysh_client_run_all (head_client, line, 1, NULL); +	vtysh_client_run_all(head_client, line, 1, NULL);  } -void -vtysh_pager_init (void) +void vtysh_pager_init(void)  { -  char *pager_defined; +	char *pager_defined; -  pager_defined = getenv ("VTYSH_PAGER"); +	pager_defined = getenv("VTYSH_PAGER"); -  if (pager_defined) -    vtysh_pager_name = strdup (pager_defined); -  else -    vtysh_pager_name = strdup ("more"); +	if (pager_defined) +		vtysh_pager_name = strdup(pager_defined); +	else +		vtysh_pager_name = strdup("more");  }  /* Command execution over the vty interface. */ -static int -vtysh_execute_func (const char *line, int pager) -{ -  int ret, cmd_stat; -  u_int i; -  vector vline; -  const struct cmd_element *cmd; -  FILE *fp = NULL; -  int closepager = 0; -  int tried = 0; -  int saved_ret, saved_node; - -  /* Split readline string up into the vector. */ -  vline = cmd_make_strvec (line); - -  if (vline == NULL) -    return CMD_SUCCESS; - -  saved_ret = ret = cmd_execute_command (vline, vty, &cmd, 1); -  saved_node = vty->node; - -  /* If command doesn't succeeded in current node, try to walk up in node tree. -   * Changing vty->node is enough to try it just out without actual walkup in -   * the vtysh. */ -  while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON && ret != CMD_WARNING -	 && vty->node > CONFIG_NODE) -    { -      vty->node = node_parent(vty->node); -      ret = cmd_execute_command (vline, vty, &cmd, 1); -      tried++; -    } - -  vty->node = saved_node; - -  /* If command succeeded in any other node than current (tried > 0) we have -   * to move into node in the vtysh where it succeeded. */ -  if (ret == CMD_SUCCESS || ret == CMD_SUCCESS_DAEMON || ret == CMD_WARNING) -    { -      if ((saved_node == BGP_VPNV4_NODE || saved_node == BGP_VPNV6_NODE -           || saved_node == BGP_IPV4_NODE -	   || saved_node == BGP_IPV6_NODE || saved_node == BGP_IPV4M_NODE -	   || saved_node == BGP_IPV6M_NODE || saved_node == BGP_EVPN_NODE) -	  && (tried == 1)) -	{ -	  vtysh_execute("exit-address-family"); -	} -      else if (saved_node == BGP_VRF_POLICY_NODE && (tried == 1)) -	{ -	  vtysh_execute("exit-vrf-policy"); -	} -      else if ((saved_node == BGP_VNC_DEFAULTS_NODE -           || saved_node == BGP_VNC_NVE_GROUP_NODE -           || saved_node == BGP_VNC_L2_GROUP_NODE) && (tried == 1)) -	{ -	  vtysh_execute("exit-vnc"); +static int vtysh_execute_func(const char *line, int pager) +{ +	int ret, cmd_stat; +	u_int i; +	vector vline; +	const struct cmd_element *cmd; +	FILE *fp = NULL; +	int closepager = 0; +	int tried = 0; +	int saved_ret, saved_node; + +	/* Split readline string up into the vector. */ +	vline = cmd_make_strvec(line); + +	if (vline == NULL) +		return CMD_SUCCESS; + +	saved_ret = ret = cmd_execute_command(vline, vty, &cmd, 1); +	saved_node = vty->node; + +	/* If command doesn't succeeded in current node, try to walk up in node +	 * tree. +	 * Changing vty->node is enough to try it just out without actual walkup +	 * in +	 * the vtysh. */ +	while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON +	       && ret != CMD_WARNING && vty->node > CONFIG_NODE) { +		vty->node = node_parent(vty->node); +		ret = cmd_execute_command(vline, vty, &cmd, 1); +		tried++;  	} -      else if ((saved_node == KEYCHAIN_KEY_NODE -               || saved_node == LDP_PSEUDOWIRE_NODE -               || saved_node == LDP_IPV4_IFACE_NODE -               || saved_node == LDP_IPV6_IFACE_NODE) -               && (tried == 1)) -	{ -	  vtysh_execute("exit"); + +	vty->node = saved_node; + +	/* If command succeeded in any other node than current (tried > 0) we +	 * have +	 * to move into node in the vtysh where it succeeded. */ +	if (ret == CMD_SUCCESS || ret == CMD_SUCCESS_DAEMON +	    || ret == CMD_WARNING) { +		if ((saved_node == BGP_VPNV4_NODE +		     || saved_node == BGP_VPNV6_NODE +		     || saved_node == BGP_IPV4_NODE +		     || saved_node == BGP_IPV6_NODE +		     || saved_node == BGP_IPV4M_NODE +		     || saved_node == BGP_IPV6M_NODE +		     || saved_node == BGP_EVPN_NODE) +		    && (tried == 1)) { +			vtysh_execute("exit-address-family"); +		} else if (saved_node == BGP_VRF_POLICY_NODE && (tried == 1)) { +			vtysh_execute("exit-vrf-policy"); +		} else if ((saved_node == BGP_VNC_DEFAULTS_NODE +			    || saved_node == BGP_VNC_NVE_GROUP_NODE +			    || saved_node == BGP_VNC_L2_GROUP_NODE) +			   && (tried == 1)) { +			vtysh_execute("exit-vnc"); +		} else if ((saved_node == KEYCHAIN_KEY_NODE +			    || saved_node == LDP_PSEUDOWIRE_NODE +			    || saved_node == LDP_IPV4_IFACE_NODE +			    || saved_node == LDP_IPV6_IFACE_NODE) +			   && (tried == 1)) { +			vtysh_execute("exit"); +		} else if (tried) { +			vtysh_execute("end"); +			vtysh_execute("configure terminal"); +		}  	} -      else if (tried) -	{ -	  vtysh_execute ("end"); -	  vtysh_execute ("configure terminal"); +	/* If command didn't succeed in any node, continue with return value +	 * from +	 * first try. */ +	else if (tried) { +		ret = saved_ret;  	} -    } -  /* If command didn't succeed in any node, continue with return value from -   * first try. */ -  else if (tried) -    { -      ret = saved_ret; -    } - -  cmd_free_strvec (vline); - -  cmd_stat = ret; -  switch (ret) -    { -    case CMD_WARNING: -      if (vty->type == VTY_FILE) -	fprintf (stdout,"Warning...\n"); -      break; -    case CMD_ERR_AMBIGUOUS: -      fprintf (stdout,"%% Ambiguous command.\n"); -      break; -    case CMD_ERR_NO_MATCH: -      fprintf (stdout,"%% Unknown command.\n"); -      break; -    case CMD_ERR_INCOMPLETE: -      fprintf (stdout,"%% Command incomplete.\n"); -      break; -    case CMD_SUCCESS_DAEMON: -      { -	/* FIXME: Don't open pager for exit commands. popen() causes problems -	 * if exited from vtysh at all. This hack shouldn't cause any problem -	 * but is really ugly. */ -	if (pager && vtysh_pager_name && (strncmp(line, "exit", 4) != 0)) -	  { -	    fp = popen (vtysh_pager_name, "w"); -	    if (fp == NULL) -	      { -		perror ("popen failed for pager"); -		fp = stdout; -	      } -	    else -	      closepager=1; -	  } -	else -	  fp = stdout; - -	if (! strcmp(cmd->string,"configure terminal")) -	  { -	    for (i = 0; i < array_size(vtysh_client); i++) -	      { -	        cmd_stat = vtysh_client_execute(&vtysh_client[i], line, fp); -		if (cmd_stat == CMD_WARNING) -		  break; -	      } - -	    if (cmd_stat) -	      { -		line = "end"; -		vline = cmd_make_strvec (line); -		if (vline == NULL) -		  { -		    if (pager && vtysh_pager_name && fp && closepager) -		      { -			if (pclose (fp) == -1) -			  { -			    perror ("pclose failed for pager"); -			  } -			fp = NULL; -		      } -		    return CMD_SUCCESS; -		  } - -		ret = cmd_execute_command (vline, vty, &cmd, 1); -		cmd_free_strvec (vline); -		if (ret != CMD_SUCCESS_DAEMON) -		  break; -	      } -	    else -	      if (cmd->func) -		{ -		  (*cmd->func) (cmd, vty, 0, NULL); -		  break; +	cmd_free_strvec(vline); + +	cmd_stat = ret; +	switch (ret) { +	case CMD_WARNING: +		if (vty->type == VTY_FILE) +			fprintf(stdout, "Warning...\n"); +		break; +	case CMD_ERR_AMBIGUOUS: +		fprintf(stdout, "%% Ambiguous command.\n"); +		break; +	case CMD_ERR_NO_MATCH: +		fprintf(stdout, "%% Unknown command.\n"); +		break; +	case CMD_ERR_INCOMPLETE: +		fprintf(stdout, "%% Command incomplete.\n"); +		break; +	case CMD_SUCCESS_DAEMON: { +		/* FIXME: Don't open pager for exit commands. popen() causes +		 * problems +		 * if exited from vtysh at all. This hack shouldn't cause any +		 * problem +		 * but is really ugly. */ +		if (pager && vtysh_pager_name +		    && (strncmp(line, "exit", 4) != 0)) { +			fp = popen(vtysh_pager_name, "w"); +			if (fp == NULL) { +				perror("popen failed for pager"); +				fp = stdout; +			} else +				closepager = 1; +		} else +			fp = stdout; + +		if (!strcmp(cmd->string, "configure terminal")) { +			for (i = 0; i < array_size(vtysh_client); i++) { +				cmd_stat = vtysh_client_execute( +					&vtysh_client[i], line, fp); +				if (cmd_stat == CMD_WARNING) +					break; +			} + +			if (cmd_stat) { +				line = "end"; +				vline = cmd_make_strvec(line); + +				if (vline == NULL) { +					if (pager && vtysh_pager_name && fp +					    && closepager) { +						if (pclose(fp) == -1) { +							perror("pclose failed for pager"); +						} +						fp = NULL; +					} +					return CMD_SUCCESS; +				} + +				ret = cmd_execute_command(vline, vty, &cmd, 1); +				cmd_free_strvec(vline); +				if (ret != CMD_SUCCESS_DAEMON) +					break; +			} else if (cmd->func) { +				(*cmd->func)(cmd, vty, 0, NULL); +				break; +			}  		} -	  } -	cmd_stat = CMD_SUCCESS; -	for (i = 0; i < array_size(vtysh_client); i++) -	  { -	    if (cmd->daemon & vtysh_client[i].flag) -	      { -	        cmd_stat = vtysh_client_execute(&vtysh_client[i], line, fp); +		cmd_stat = CMD_SUCCESS; +		for (i = 0; i < array_size(vtysh_client); i++) { +			if (cmd->daemon & vtysh_client[i].flag) { +				cmd_stat = vtysh_client_execute( +					&vtysh_client[i], line, fp); +				if (cmd_stat != CMD_SUCCESS) +					break; +			} +		}  		if (cmd_stat != CMD_SUCCESS) -		  break; -	      } -	  } -	if (cmd_stat != CMD_SUCCESS) -	  break; - -	if (cmd->func) -	  (*cmd->func) (cmd, vty, 0, NULL); -      } -    } -  if (pager && vtysh_pager_name && fp && closepager) -    { -      if (pclose (fp) == -1) -	{ -	  perror ("pclose failed for pager"); +			break; + +		if (cmd->func) +			(*cmd->func)(cmd, vty, 0, NULL);  	} -      fp = NULL; -    } -  return cmd_stat; +	} +	if (pager && vtysh_pager_name && fp && closepager) { +		if (pclose(fp) == -1) { +			perror("pclose failed for pager"); +		} +		fp = NULL; +	} +	return cmd_stat;  } -int -vtysh_execute_no_pager (const char *line) +int vtysh_execute_no_pager(const char *line)  { -  return vtysh_execute_func (line, 0); +	return vtysh_execute_func(line, 0);  } -int -vtysh_execute (const char *line) +int vtysh_execute(const char *line)  { -  return vtysh_execute_func (line, 1); +	return vtysh_execute_func(line, 1);  } -static char * -trim (char *s) +static char *trim(char *s)  { -  size_t size; -  char *end; +	size_t size; +	char *end; -  size = strlen(s); +	size = strlen(s); -  if (!size) -      return s; +	if (!size) +		return s; -  end = s + size - 1; -  while (end >= s && isspace(*end)) -      end--; -  *(end + 1) = '\0'; +	end = s + size - 1; +	while (end >= s && isspace(*end)) +		end--; +	*(end + 1) = '\0'; -  while (*s && isspace(*s)) -      s++; +	while (*s && isspace(*s)) +		s++; -  return s; +	return s;  } -int -vtysh_mark_file (const char *filename) +int vtysh_mark_file(const char *filename)  { -  struct vty *vty; -  FILE *confp = NULL; -  int ret; -  vector vline; -  int tried = 0; -  const struct cmd_element *cmd; -  int saved_ret, prev_node; -  int lineno = 0; -  char *vty_buf_copy = NULL; -  char *vty_buf_trimmed = NULL; +	struct vty *vty; +	FILE *confp = NULL; +	int ret; +	vector vline; +	int tried = 0; +	const struct cmd_element *cmd; +	int saved_ret, prev_node; +	int lineno = 0; +	char *vty_buf_copy = NULL; +	char *vty_buf_trimmed = NULL; -  if (strncmp("-", filename, 1) == 0) -    confp = stdin; -  else -    confp = fopen (filename, "r"); +	if (strncmp("-", filename, 1) == 0) +		confp = stdin; +	else +		confp = fopen(filename, "r"); -  if (confp == NULL) -    { -      fprintf (stderr, "%% Can't open config file %s due to '%s'.\n", -               filename, safe_strerror (errno)); -      return (CMD_ERR_NO_FILE); -    } +	if (confp == NULL) { +		fprintf(stderr, "%% Can't open config file %s due to '%s'.\n", +			filename, safe_strerror(errno)); +		return (CMD_ERR_NO_FILE); +	} -  vty = vty_new (); -  vty->fd = 0;			/* stdout */ -  vty->type = VTY_TERM; -  vty->node = CONFIG_NODE; +	vty = vty_new(); +	vty->fd = 0; /* stdout */ +	vty->type = VTY_TERM; +	vty->node = CONFIG_NODE; -  vtysh_execute_no_pager ("enable"); -  vtysh_execute_no_pager ("configure terminal"); -  vty_buf_copy = XCALLOC (MTYPE_VTYSH_CMD, VTY_BUFSIZ); +	vtysh_execute_no_pager("enable"); +	vtysh_execute_no_pager("configure terminal"); +	vty_buf_copy = XCALLOC(MTYPE_VTYSH_CMD, VTY_BUFSIZ); -  while (fgets (vty->buf, VTY_BUFSIZ, confp)) -    { -      lineno++; -      tried = 0; -      strcpy(vty_buf_copy, vty->buf); -      vty_buf_trimmed = trim(vty_buf_copy); +	while (fgets(vty->buf, VTY_BUFSIZ, confp)) { +		lineno++; +		tried = 0; +		strcpy(vty_buf_copy, vty->buf); +		vty_buf_trimmed = trim(vty_buf_copy); -      if (vty_buf_trimmed[0] == '!' || vty_buf_trimmed[0] == '#') -	{ -	  fprintf(stdout, "%s", vty->buf); -	  continue; -	} +		if (vty_buf_trimmed[0] == '!' || vty_buf_trimmed[0] == '#') { +			fprintf(stdout, "%s", vty->buf); +			continue; +		} -      /* Split readline string up into the vector. */ -      vline = cmd_make_strvec (vty->buf); +		/* Split readline string up into the vector. */ +		vline = cmd_make_strvec(vty->buf); -      if (vline == NULL) -	{ -	  fprintf(stdout, "%s", vty->buf); -	  continue; -	} +		if (vline == NULL) { +			fprintf(stdout, "%s", vty->buf); +			continue; +		} -      /* Ignore the "end" lines, we will generate these where appropriate */ -      if (strlen(vty_buf_trimmed) == 3 && strncmp("end", vty_buf_trimmed, 3) == 0) -        { -          continue; -        } - -      prev_node = vty->node; -      saved_ret = ret = cmd_execute_command_strict (vline, vty, &cmd); - -      /* If command doesn't succeeded in current node, try to walk up in node tree. -       * Changing vty->node is enough to try it just out without actual walkup in -       * the vtysh. */ -      while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON && ret != CMD_WARNING -	     && vty->node > CONFIG_NODE) -	{ -	  vty->node = node_parent(vty->node); -	  ret = cmd_execute_command_strict (vline, vty, &cmd); -	  tried++; -	} +		/* Ignore the "end" lines, we will generate these where +		 * appropriate */ +		if (strlen(vty_buf_trimmed) == 3 +		    && strncmp("end", vty_buf_trimmed, 3) == 0) { +			continue; +		} -      /* If command succeeded in any other node than current (tried > 0) we have -       * to move into node in the vtysh where it succeeded. */ -      if (ret == CMD_SUCCESS || ret == CMD_SUCCESS_DAEMON || ret == CMD_WARNING) -	{ -	  if ((prev_node == BGP_VPNV4_NODE || prev_node == BGP_IPV4_NODE -	       || prev_node == BGP_IPV6_NODE || prev_node == BGP_IPV4M_NODE -	       || prev_node == BGP_IPV6M_NODE || prev_node == BGP_VPNV6_NODE -               || prev_node == BGP_EVPN_NODE) -	      && (tried == 1)) -	    { -	      fprintf(stdout, "exit-address-family\n"); -	    } -	  else if ((prev_node == KEYCHAIN_KEY_NODE) && (tried == 1)) -	    { -	      fprintf(stdout, "exit\n"); -	    } -	  else if (tried) -	    { -	      fprintf(stdout, "end\n"); -	    } -	} -      /* If command didn't succeed in any node, continue with return value from -       * first try. */ -      else if (tried) -	{ -	  ret = saved_ret; -	  vty->node = prev_node; -	} +		prev_node = vty->node; +		saved_ret = ret = cmd_execute_command_strict(vline, vty, &cmd); + +		/* If command doesn't succeeded in current node, try to walk up +		 * in node tree. +		 * Changing vty->node is enough to try it just out without +		 * actual walkup in +		 * the vtysh. */ +		while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON +		       && ret != CMD_WARNING && vty->node > CONFIG_NODE) { +			vty->node = node_parent(vty->node); +			ret = cmd_execute_command_strict(vline, vty, &cmd); +			tried++; +		} -      cmd_free_strvec (vline); -      switch (ret) -	{ -	case CMD_WARNING: -	  if (vty->type == VTY_FILE) -	    fprintf (stderr,"line %d: Warning...: %s\n", lineno, vty->buf); -	  fclose(confp); -	  vty_close(vty); -          XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); -	  return CMD_WARNING; -	case CMD_ERR_AMBIGUOUS: -	  fprintf (stderr,"line %d: %% Ambiguous command: %s\n", lineno, vty->buf); -	  fclose(confp); -	  vty_close(vty); -          XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); -	  return CMD_ERR_AMBIGUOUS; -	case CMD_ERR_NO_MATCH: -	  fprintf (stderr,"line %d: %% Unknown command: %s\n", lineno, vty->buf); -	  fclose(confp); -	  vty_close(vty); -          XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); -	  return CMD_ERR_NO_MATCH; -	case CMD_ERR_INCOMPLETE: -	  fprintf (stderr,"line %d: %% Command incomplete: %s\n", lineno, vty->buf); -	  fclose(confp); -	  vty_close(vty); -          XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); -	  return CMD_ERR_INCOMPLETE; -	case CMD_SUCCESS: -	  fprintf(stdout, "%s", vty->buf); -	  break; -	case CMD_SUCCESS_DAEMON: -	  { -	    u_int i; -	    int cmd_stat = CMD_SUCCESS; - -	    fprintf(stdout, "%s", vty->buf); -	    for (i = 0; i < array_size(vtysh_client); i++) -	      { -	        if (cmd->daemon & vtysh_client[i].flag) -		  { -		    cmd_stat = vtysh_client_execute (&vtysh_client[i], -						     vty->buf, stdout); -		    if (cmd_stat != CMD_SUCCESS) -		      break; -		  } -	      } -	    if (cmd_stat != CMD_SUCCESS) -	      break; - -	    if (cmd->func) -	      (*cmd->func) (cmd, vty, 0, NULL); -	  } +		/* If command succeeded in any other node than current (tried > +		 * 0) we have +		 * to move into node in the vtysh where it succeeded. */ +		if (ret == CMD_SUCCESS || ret == CMD_SUCCESS_DAEMON +		    || ret == CMD_WARNING) { +			if ((prev_node == BGP_VPNV4_NODE +			     || prev_node == BGP_IPV4_NODE +			     || prev_node == BGP_IPV6_NODE +			     || prev_node == BGP_IPV4M_NODE +			     || prev_node == BGP_IPV6M_NODE +			     || prev_node == BGP_VPNV6_NODE +			     || prev_node == BGP_EVPN_NODE) +			    && (tried == 1)) { +				fprintf(stdout, "exit-address-family\n"); +			} else if ((prev_node == KEYCHAIN_KEY_NODE) +				   && (tried == 1)) { +				fprintf(stdout, "exit\n"); +			} else if (tried) { +				fprintf(stdout, "end\n"); +			} +		} +		/* If command didn't succeed in any node, continue with return +		 * value from +		 * first try. */ +		else if (tried) { +			ret = saved_ret; +			vty->node = prev_node; +		} + +		cmd_free_strvec(vline); +		switch (ret) { +		case CMD_WARNING: +			if (vty->type == VTY_FILE) +				fprintf(stderr, "line %d: Warning...: %s\n", +					lineno, vty->buf); +			fclose(confp); +			vty_close(vty); +			XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); +			return CMD_WARNING; +		case CMD_ERR_AMBIGUOUS: +			fprintf(stderr, "line %d: %% Ambiguous command: %s\n", +				lineno, vty->buf); +			fclose(confp); +			vty_close(vty); +			XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); +			return CMD_ERR_AMBIGUOUS; +		case CMD_ERR_NO_MATCH: +			fprintf(stderr, "line %d: %% Unknown command: %s\n", +				lineno, vty->buf); +			fclose(confp); +			vty_close(vty); +			XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); +			return CMD_ERR_NO_MATCH; +		case CMD_ERR_INCOMPLETE: +			fprintf(stderr, "line %d: %% Command incomplete: %s\n", +				lineno, vty->buf); +			fclose(confp); +			vty_close(vty); +			XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); +			return CMD_ERR_INCOMPLETE; +		case CMD_SUCCESS: +			fprintf(stdout, "%s", vty->buf); +			break; +		case CMD_SUCCESS_DAEMON: { +			u_int i; +			int cmd_stat = CMD_SUCCESS; + +			fprintf(stdout, "%s", vty->buf); +			for (i = 0; i < array_size(vtysh_client); i++) { +				if (cmd->daemon & vtysh_client[i].flag) { +					cmd_stat = vtysh_client_execute( +						&vtysh_client[i], vty->buf, +						stdout); +					if (cmd_stat != CMD_SUCCESS) +						break; +				} +			} +			if (cmd_stat != CMD_SUCCESS) +				break; + +			if (cmd->func) +				(*cmd->func)(cmd, vty, 0, NULL); +		} +		}  	} -    } -  /* This is the end */ -  fprintf(stdout, "\nend\n"); -  vty_close(vty); -  XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); +	/* This is the end */ +	fprintf(stdout, "\nend\n"); +	vty_close(vty); +	XFREE(MTYPE_VTYSH_CMD, vty_buf_copy); -  if (confp != stdin) -    fclose(confp); +	if (confp != stdin) +		fclose(confp); -  return (0); +	return (0);  }  /* Configration make from file. */ -int -vtysh_config_from_file (struct vty *vty, FILE *fp) +int vtysh_config_from_file(struct vty *vty, FILE *fp) +{ +	int ret; +	const struct cmd_element *cmd; +	int lineno = 0; +	int retcode = CMD_SUCCESS; + +	while (fgets(vty->buf, VTY_BUFSIZ, fp)) { +		lineno++; + +		ret = command_config_read_one_line(vty, &cmd, 1); + +		switch (ret) { +		case CMD_WARNING: +			if (vty->type == VTY_FILE) +				fprintf(stderr, "line %d: Warning[%d]...: %s\n", +					lineno, vty->node, vty->buf); +			retcode = CMD_WARNING; /* once we have an error, we +						  remember & return that */ +			break; +		case CMD_ERR_AMBIGUOUS: +			fprintf(stderr, +				"line %d: %% Ambiguous command[%d]: %s\n", +				lineno, vty->node, vty->buf); +			retcode = CMD_ERR_AMBIGUOUS; /* once we have an error, +							we remember & return +							that */ +			break; +		case CMD_ERR_NO_MATCH: +			fprintf(stderr, "line %d: %% Unknown command[%d]: %s", +				lineno, vty->node, vty->buf); +			retcode = +				CMD_ERR_NO_MATCH; /* once we have an error, we +						     remember & return that */ +			break; +		case CMD_ERR_INCOMPLETE: +			fprintf(stderr, +				"line %d: %% Command incomplete[%d]: %s\n", +				lineno, vty->node, vty->buf); +			retcode = CMD_ERR_INCOMPLETE; /* once we have an error, +							 we remember & return +							 that */ +			break; +		case CMD_SUCCESS_DAEMON: { +			u_int i; +			int cmd_stat = CMD_SUCCESS; + +			for (i = 0; i < array_size(vtysh_client); i++) { +				if (cmd->daemon & vtysh_client[i].flag) { +					cmd_stat = vtysh_client_execute( +						&vtysh_client[i], vty->buf, +						stdout); +					/* +					 * CMD_WARNING - Can mean that the +					 * command was +					 * parsed successfully but it was +					 * already entered +					 * in a few spots.  As such if we +					 * receive a +					 * CMD_WARNING from a daemon we +					 * shouldn't stop +					 * talking to the other daemons for the +					 * particular +					 * command. +					 */ +					if (cmd_stat != CMD_SUCCESS +					    && cmd_stat != CMD_WARNING) { +						fprintf(stderr, +							"line %d: Failure to communicate[%d] to %s, line: %s\n", +							lineno, cmd_stat, +							vtysh_client[i].name, +							vty->buf); +						break; +					} +				} +			} +			if (cmd_stat != CMD_SUCCESS) +				break; + +			if (cmd->func) +				(*cmd->func)(cmd, vty, 0, NULL); +		} +		} +	} + +	return (retcode); +} + +/* We don't care about the point of the cursor when '?' is typed. */ +static int vtysh_rl_describe(void)  { -  int ret; -  const struct cmd_element *cmd; -  int lineno = 0; -  int retcode = CMD_SUCCESS; +	int ret; +	unsigned int i; +	vector vline; +	vector describe; +	int width; +	struct cmd_token *token; -  while (fgets (vty->buf, VTY_BUFSIZ, fp)) -    { -      lineno++; +	vline = cmd_make_strvec(rl_line_buffer); -      ret = command_config_read_one_line (vty, &cmd, 1); +	/* In case of '> ?'. */ +	if (vline == NULL) { +		vline = vector_init(1); +		vector_set(vline, NULL); +	} else if (rl_end && isspace((int)rl_line_buffer[rl_end - 1])) +		vector_set(vline, NULL); -      switch (ret) -	{ -	case CMD_WARNING: -	  if (vty->type == VTY_FILE) -	    fprintf (stderr,"line %d: Warning[%d]...: %s\n", lineno, vty->node, vty->buf); -	  retcode = CMD_WARNING;		/* once we have an error, we remember & return that */ -	  break; +	describe = cmd_describe_command(vline, vty, &ret); + +	fprintf(stdout, "\n"); + +	/* Ambiguous and no match error. */ +	switch (ret) {  	case CMD_ERR_AMBIGUOUS: -	  fprintf (stderr,"line %d: %% Ambiguous command[%d]: %s\n", lineno, vty->node, vty->buf); -	  retcode = CMD_ERR_AMBIGUOUS;		/* once we have an error, we remember & return that */ -	  break; +		cmd_free_strvec(vline); +		fprintf(stdout, "%% Ambiguous command.\n"); +		rl_on_new_line(); +		return 0; +		break;  	case CMD_ERR_NO_MATCH: -	  fprintf (stderr,"line %d: %% Unknown command[%d]: %s", lineno, vty->node, vty->buf); -	  retcode = CMD_ERR_NO_MATCH;		/* once we have an error, we remember & return that */ -	  break; -	case CMD_ERR_INCOMPLETE: -	  fprintf (stderr,"line %d: %% Command incomplete[%d]: %s\n", lineno, vty->node, vty->buf); -	  retcode = CMD_ERR_INCOMPLETE;		/* once we have an error, we remember & return that */ -	  break; -	case CMD_SUCCESS_DAEMON: -	  { -	    u_int i; -	    int cmd_stat = CMD_SUCCESS; - -	    for (i = 0; i < array_size(vtysh_client); i++) -	      { -	        if (cmd->daemon & vtysh_client[i].flag) -		  { -		    cmd_stat = vtysh_client_execute (&vtysh_client[i], -						     vty->buf, stdout); -		    /* -		     * CMD_WARNING - Can mean that the command was -		     * parsed successfully but it was already entered -		     * in a few spots.  As such if we receive a -		     * CMD_WARNING from a daemon we shouldn't stop -		     * talking to the other daemons for the particular -		     * command. -		     */ -		    if (cmd_stat != CMD_SUCCESS && cmd_stat != CMD_WARNING) -                      { -                        fprintf (stderr, "line %d: Failure to communicate[%d] to %s, line: %s\n", -                                 lineno, cmd_stat, vtysh_client[i].name, vty->buf); -		        break; -                      } -		  } -	      } -	    if (cmd_stat != CMD_SUCCESS) -	      break; - -	    if (cmd->func) -	      (*cmd->func) (cmd, vty, 0, NULL); -	  } +		cmd_free_strvec(vline); +		fprintf(stdout, "%% There is no matched command.\n"); +		rl_on_new_line(); +		return 0; +		break;  	} -    } -  return (retcode); -} +	/* Get width of command string. */ +	width = 0; +	for (i = 0; i < vector_active(describe); i++) +		if ((token = vector_slot(describe, i)) != NULL) { +			if (token->text[0] == '\0') +				continue; -/* We don't care about the point of the cursor when '?' is typed. */ -static int -vtysh_rl_describe (void) -{ -  int ret; -  unsigned int i; -  vector vline; -  vector describe; -  int width; -  struct cmd_token *token; - -  vline = cmd_make_strvec (rl_line_buffer); - -  /* In case of '> ?'. */ -  if (vline == NULL) -    { -      vline = vector_init (1); -      vector_set (vline, NULL); -    } -  else  -    if (rl_end && isspace ((int) rl_line_buffer[rl_end - 1])) -      vector_set (vline, NULL); - -  describe = cmd_describe_command (vline, vty, &ret); - -  fprintf (stdout,"\n"); - -  /* Ambiguous and no match error. */ -  switch (ret) -    { -    case CMD_ERR_AMBIGUOUS: -      cmd_free_strvec (vline); -      fprintf (stdout,"%% Ambiguous command.\n"); -      rl_on_new_line (); -      return 0; -      break; -    case CMD_ERR_NO_MATCH: -      cmd_free_strvec (vline); -      fprintf (stdout,"%% There is no matched command.\n"); -      rl_on_new_line (); -      return 0; -      break; -    }   - -  /* Get width of command string. */ -  width = 0; -  for (i = 0; i < vector_active (describe); i++) -    if ((token = vector_slot (describe, i)) != NULL) -      { -        if (token->text[0] == '\0') -          continue; - -        int len = strlen (token->text); - -        if (width < len) -          width = len; -      } - -  for (i = 0; i < vector_active (describe); i++) -    if ((token = vector_slot (describe, i)) != NULL) -      { -	if (! token->desc) -	  fprintf (stdout,"  %-s\n", -		   token->text); -	else -	  fprintf (stdout,"  %-*s  %s\n", -		   width, -		   token->text, -		   token->desc); -      } +			int len = strlen(token->text); + +			if (width < len) +				width = len; +		} + +	for (i = 0; i < vector_active(describe); i++) +		if ((token = vector_slot(describe, i)) != NULL) { +			if (!token->desc) +				fprintf(stdout, "  %-s\n", token->text); +			else +				fprintf(stdout, "  %-*s  %s\n", width, +					token->text, token->desc); +		} -  cmd_free_strvec (vline); -  vector_free (describe); +	cmd_free_strvec(vline); +	vector_free(describe); -  rl_on_new_line(); +	rl_on_new_line(); -  return 0; +	return 0;  }  /* Result of cmd_complete_command() call will be stored here @@ -812,1101 +782,793 @@ vtysh_rl_describe (void)   * correct places only. */  int complete_status; -static char * -command_generator (const char *text, int state) +static char *command_generator(const char *text, int state)  { -  vector vline; -  static char **matched = NULL; -  static int index = 0; +	vector vline; +	static char **matched = NULL; +	static int index = 0; -  /* First call. */ -  if (! state) -    { -      index = 0; +	/* First call. */ +	if (!state) { +		index = 0; -      if (vty->node == AUTH_NODE || vty->node == AUTH_ENABLE_NODE) -	return NULL; +		if (vty->node == AUTH_NODE || vty->node == AUTH_ENABLE_NODE) +			return NULL; -      vline = cmd_make_strvec (rl_line_buffer); -      if (vline == NULL) -	return NULL; +		vline = cmd_make_strvec(rl_line_buffer); +		if (vline == NULL) +			return NULL; -      if (rl_end && isspace ((int) rl_line_buffer[rl_end - 1])) -	vector_set (vline, NULL); +		if (rl_end && isspace((int)rl_line_buffer[rl_end - 1])) +			vector_set(vline, NULL); -      matched = cmd_complete_command (vline, vty, &complete_status); -      cmd_free_strvec (vline); -    } +		matched = cmd_complete_command(vline, vty, &complete_status); +		cmd_free_strvec(vline); +	} -  if (matched && matched[index]) -    return matched[index++]; +	if (matched && matched[index]) +		return matched[index++]; -  XFREE (MTYPE_TMP, matched); -  matched = NULL; +	XFREE(MTYPE_TMP, matched); +	matched = NULL; -  return NULL; +	return NULL;  } -static char ** -new_completion (char *text, int start, int end) +static char **new_completion(char *text, int start, int end)  { -  char **matches; +	char **matches; -  matches = rl_completion_matches (text, command_generator); +	matches = rl_completion_matches(text, command_generator); -  if (matches) -    { -      rl_point = rl_end; -      if (complete_status != CMD_COMPLETE_FULL_MATCH) -        /* only append a space on full match */ -        rl_completion_append_character = '\0'; -    } +	if (matches) { +		rl_point = rl_end; +		if (complete_status != CMD_COMPLETE_FULL_MATCH) +			/* only append a space on full match */ +			rl_completion_append_character = '\0'; +	} -  return matches; +	return matches;  }  /* Vty node structures. */ -static struct cmd_node bgp_node = -{ -  BGP_NODE, -  "%s(config-router)# ", +static struct cmd_node bgp_node = { +	BGP_NODE, "%s(config-router)# ",  }; -static struct cmd_node rip_node = -{ -  RIP_NODE, -  "%s(config-router)# ", +static struct cmd_node rip_node = { +	RIP_NODE, "%s(config-router)# ",  }; -static struct cmd_node isis_node = -{ -  ISIS_NODE, -  "%s(config-router)# ", +static struct cmd_node isis_node = { +	ISIS_NODE, "%s(config-router)# ",  }; -static struct cmd_node interface_node = -{ -  INTERFACE_NODE, -  "%s(config-if)# ", +static struct cmd_node interface_node = { +	INTERFACE_NODE, "%s(config-if)# ",  }; -static struct cmd_node pw_node = -{ -  PW_NODE, -  "%s(config-pw)# ", +static struct cmd_node pw_node = { +	PW_NODE, "%s(config-pw)# ",  }; -static struct cmd_node ns_node = -{ -  NS_NODE, -  "%s(config-logical-router)# ", +static struct cmd_node ns_node = { +	NS_NODE, "%s(config-logical-router)# ",  }; -static struct cmd_node vrf_node = -{ -  VRF_NODE, -  "%s(config-vrf)# ", +static struct cmd_node vrf_node = { +	VRF_NODE, "%s(config-vrf)# ",  }; -static struct cmd_node rmap_node = -{ -  RMAP_NODE, -  "%s(config-route-map)# " -}; +static struct cmd_node rmap_node = {RMAP_NODE, "%s(config-route-map)# "}; -static struct cmd_node zebra_node = -{ -  ZEBRA_NODE, -  "%s(config-router)# " -}; +static struct cmd_node zebra_node = {ZEBRA_NODE, "%s(config-router)# "}; -static struct cmd_node bgp_vpnv4_node = -{ -  BGP_VPNV4_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_vpnv4_node = {BGP_VPNV4_NODE, +					 "%s(config-router-af)# "}; -static struct cmd_node bgp_vpnv6_node = -{ -  BGP_VPNV6_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_vpnv6_node = {BGP_VPNV6_NODE, +					 "%s(config-router-af)# "}; -static struct cmd_node bgp_ipv4_node = -{ -  BGP_IPV4_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_ipv4_node = {BGP_IPV4_NODE, +					"%s(config-router-af)# "}; -static struct cmd_node bgp_ipv4m_node = -{ -  BGP_IPV4M_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_ipv4m_node = {BGP_IPV4M_NODE, +					 "%s(config-router-af)# "}; -static struct cmd_node bgp_ipv6_node = -{ -  BGP_IPV6_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_ipv6_node = {BGP_IPV6_NODE, +					"%s(config-router-af)# "}; -static struct cmd_node bgp_ipv6m_node = -{ -  BGP_IPV6M_NODE, -  "%s(config-router-af)# " -}; +static struct cmd_node bgp_ipv6m_node = {BGP_IPV6M_NODE, +					 "%s(config-router-af)# "}; -static struct cmd_node bgp_evpn_node = -{ -  BGP_EVPN_NODE, -  "%s(config-router-af)# " +static struct cmd_node bgp_evpn_node = {BGP_EVPN_NODE, +					"%s(config-router-af)# "}; + +static struct cmd_node bgp_vnc_defaults_node = { +	BGP_VNC_DEFAULTS_NODE, "%s(config-router-vnc-defaults)# "}; + +static struct cmd_node bgp_vnc_nve_group_node = { +	BGP_VNC_NVE_GROUP_NODE, "%s(config-router-vnc-nve-group)# "}; + +static struct cmd_node bgp_vrf_policy_node = {BGP_VRF_POLICY_NODE, +					      "%s(config-router-vrf-policy)# "}; + +static struct cmd_node bgp_vnc_l2_group_node = { +	BGP_VNC_L2_GROUP_NODE, "%s(config-router-vnc-l2-group)# "}; + +static struct cmd_node ospf_node = {OSPF_NODE, "%s(config-router)# "}; + +static struct cmd_node ripng_node = {RIPNG_NODE, "%s(config-router)# "}; + +static struct cmd_node ospf6_node = {OSPF6_NODE, "%s(config-ospf6)# "}; + +static struct cmd_node ldp_node = {LDP_NODE, "%s(config-ldp)# "}; + +static struct cmd_node ldp_ipv4_node = {LDP_IPV4_NODE, "%s(config-ldp-af)# "}; + +static struct cmd_node ldp_ipv6_node = {LDP_IPV6_NODE, "%s(config-ldp-af)# "}; + +static struct cmd_node ldp_ipv4_iface_node = {LDP_IPV4_IFACE_NODE, +					      "%s(config-ldp-af-if)# "}; + +static struct cmd_node ldp_ipv6_iface_node = {LDP_IPV6_IFACE_NODE, +					      "%s(config-ldp-af-if)# "}; + +static struct cmd_node ldp_l2vpn_node = {LDP_L2VPN_NODE, "%s(config-l2vpn)# "}; + +static struct cmd_node ldp_pseudowire_node = {LDP_PSEUDOWIRE_NODE, +					      "%s(config-l2vpn-pw)# "}; + +static struct cmd_node keychain_node = {KEYCHAIN_NODE, "%s(config-keychain)# "}; + +static struct cmd_node keychain_key_node = {KEYCHAIN_KEY_NODE, +					    "%s(config-keychain-key)# "}; + +struct cmd_node link_params_node = { +	LINK_PARAMS_NODE, "%s(config-link-params)# ",  }; -static struct cmd_node bgp_vnc_defaults_node = +/* Defined in lib/vty.c */ +extern struct cmd_node vty_node; + +/* When '^Z' is received from vty, move down to the enable mode. */ +static int vtysh_end(void) +{ +	switch (vty->node) { +	case VIEW_NODE: +	case ENABLE_NODE: +		/* Nothing to do. */ +		break; +	default: +		vty->node = ENABLE_NODE; +		break; +	} +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_REALLYALL, vtysh_end_all, vtysh_end_all_cmd, "end", +	"End current mode and change to enable mode\n")  { -  BGP_VNC_DEFAULTS_NODE, -  "%s(config-router-vnc-defaults)# " -}; +	return vtysh_end(); +} -static struct cmd_node bgp_vnc_nve_group_node = +DEFUNSH(VTYSH_BGPD, router_bgp, router_bgp_cmd, +	"router bgp [(1-4294967295) [<view|vrf> WORD]]", +	ROUTER_STR BGP_STR AS_STR +	"BGP view\nBGP VRF\n" +	"View/VRF name\n")  { -  BGP_VNC_NVE_GROUP_NODE, -  "%s(config-router-vnc-nve-group)# " -}; +	vty->node = BGP_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node bgp_vrf_policy_node = { -  BGP_VRF_POLICY_NODE, -  "%s(config-router-vrf-policy)# " -}; +DEFUNSH(VTYSH_BGPD, address_family_vpnv4, address_family_vpnv4_cmd, +	"address-family vpnv4 [unicast]", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family Modifier\n") +{ +	vty->node = BGP_VPNV4_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node bgp_vnc_l2_group_node = +DEFUNSH(VTYSH_BGPD, address_family_vpnv6, address_family_vpnv6_cmd, +	"address-family vpnv6 [unicast]", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family Modifier\n")  { -  BGP_VNC_L2_GROUP_NODE, -  "%s(config-router-vnc-l2-group)# " -}; +	vty->node = BGP_VPNV6_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ospf_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv4, address_family_ipv4_cmd, +	"address-family ipv4 [unicast]", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family Modifier\n")  { -  OSPF_NODE, -  "%s(config-router)# " -}; +	vty->node = BGP_IPV4_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ripng_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv4_multicast, +	address_family_ipv4_multicast_cmd, "address-family ipv4 multicast", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family modifier\n")  { -  RIPNG_NODE, -  "%s(config-router)# " -}; +	vty->node = BGP_IPV4M_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ospf6_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv4_vpn, address_family_ipv4_vpn_cmd, +	"address-family ipv4 vpn", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family modifier\n")  { -  OSPF6_NODE, -  "%s(config-ospf6)# " -}; +	vty->node = BGP_VPNV4_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv6, address_family_ipv6_cmd, +	"address-family ipv6 [unicast]", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family modifier\n")  { -  LDP_NODE, -  "%s(config-ldp)# " -}; +	vty->node = BGP_IPV6_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_ipv4_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv6_multicast, +	address_family_ipv6_multicast_cmd, "address-family ipv6 multicast", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family modifier\n")  { -  LDP_IPV4_NODE, -  "%s(config-ldp-af)# " -}; +	vty->node = BGP_IPV6M_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_ipv6_node = +DEFUNSH(VTYSH_BGPD, address_family_ipv6_vpn, address_family_ipv6_vpn_cmd, +	"address-family ipv6 vpn", +	"Enter Address Family command mode\n" +	"Address Family\n" +	"Address Family modifier\n")  { -  LDP_IPV6_NODE, -  "%s(config-ldp-af)# " -}; +	vty->node = BGP_VPNV6_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_ipv4_iface_node = +DEFUNSH(VTYSH_BGPD, address_family_evpn, address_family_evpn_cmd, +	"address-family <l2vpn evpn>", +	"Enter Address Family command mode\n" +	"EVPN Address family\n" +	"Layer2 VPN Address family\n" +	"Ethernet Virtual Private Network Subsequent Address Family\n")  { -  LDP_IPV4_IFACE_NODE, -  "%s(config-ldp-af-if)# " -}; +	vty->node = BGP_EVPN_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_ipv6_iface_node = +#if defined(ENABLE_BGP_VNC) +DEFUNSH(VTYSH_BGPD, vnc_defaults, vnc_defaults_cmd, "vnc defaults", +	"VNC/RFP related configuration\n" +	"Configure default NVE group\n")  { -  LDP_IPV6_IFACE_NODE, -  "%s(config-ldp-af-if)# " -}; +	vty->node = BGP_VNC_DEFAULTS_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_l2vpn_node = +DEFUNSH(VTYSH_BGPD, vnc_nve_group, vnc_nve_group_cmd, "vnc nve-group NAME", +	"VNC/RFP related configuration\n" +	"Configure a NVE group\n" +	"Group name\n")  { -  LDP_L2VPN_NODE, -  "%s(config-l2vpn)# " -}; +	vty->node = BGP_VNC_NVE_GROUP_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node ldp_pseudowire_node = +DEFUNSH(VTYSH_BGPD, vnc_vrf_policy, vnc_vrf_policy_cmd, "vrf-policy NAME", +	"Configure a VRF policy group\n" +	"Group name\n")  { -  LDP_PSEUDOWIRE_NODE, -  "%s(config-l2vpn-pw)# " -}; +	vty->node = BGP_VRF_POLICY_NODE; +	return CMD_SUCCESS; +} -static struct cmd_node keychain_node = +DEFUNSH(VTYSH_BGPD, vnc_l2_group, vnc_l2_group_cmd, "vnc l2-group NAME", +	"VNC/RFP related configuration\n" +	"Configure a L2 group\n" +	"Group name\n")  { -  KEYCHAIN_NODE, -  "%s(config-keychain)# " -}; +	vty->node = BGP_VNC_L2_GROUP_NODE; +	return CMD_SUCCESS; +} +#endif -static struct cmd_node keychain_key_node = +DEFUNSH(VTYSH_RIPD, key_chain, key_chain_cmd, "key chain WORD", +	"Authentication key management\n" +	"Key-chain management\n" +	"Key-chain name\n")  { -  KEYCHAIN_KEY_NODE, -  "%s(config-keychain-key)# " -}; +	vty->node = KEYCHAIN_NODE; +	return CMD_SUCCESS; +} -struct cmd_node link_params_node = +DEFUNSH(VTYSH_RIPD, key, key_cmd, "key (0-2147483647)", +	"Configure a key\n" +	"Key identifier number\n")  { -  LINK_PARAMS_NODE, -  "%s(config-link-params)# ", -}; +	vty->node = KEYCHAIN_KEY_NODE; +	return CMD_SUCCESS; +} -/* Defined in lib/vty.c */ -extern struct cmd_node vty_node; +DEFUNSH(VTYSH_RIPD, router_rip, router_rip_cmd, "router rip", +	ROUTER_STR "RIP\n") +{ +	vty->node = RIP_NODE; +	return CMD_SUCCESS; +} -/* When '^Z' is received from vty, move down to the enable mode. */ -static int -vtysh_end (void) -{ -  switch (vty->node) -    { -    case VIEW_NODE: -    case ENABLE_NODE: -      /* Nothing to do. */ -      break; -    default: -      vty->node = ENABLE_NODE; -      break; -    } -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_REALLYALL, -	 vtysh_end_all, -	 vtysh_end_all_cmd, -	 "end", -	 "End current mode and change to enable mode\n") -{ -  return vtysh_end (); -} - -DEFUNSH (VTYSH_BGPD, -	 router_bgp, -	 router_bgp_cmd, -	 "router bgp [(1-4294967295) [<view|vrf> WORD]]", -	 ROUTER_STR -	 BGP_STR -	 AS_STR -         "BGP view\nBGP VRF\n" -         "View/VRF name\n") +DEFUNSH(VTYSH_RIPNGD, router_ripng, router_ripng_cmd, "router ripng", +	ROUTER_STR "RIPng\n")  { -  vty->node = BGP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -	 address_family_vpnv4, -	 address_family_vpnv4_cmd, -	 "address-family vpnv4 [unicast]", -	 "Enter Address Family command mode\n" -	 "Address Family\n" -	 "Address Family Modifier\n") -{ -  vty->node = BGP_VPNV4_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -	 address_family_vpnv6, -	 address_family_vpnv6_cmd, -	 "address-family vpnv6 [unicast]", -	 "Enter Address Family command mode\n" -	 "Address Family\n" -	 "Address Family Modifier\n") -{ -  vty->node = BGP_VPNV6_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -         address_family_ipv4, -         address_family_ipv4_cmd, -         "address-family ipv4 [unicast]", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family Modifier\n") -{ -  vty->node = BGP_IPV4_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -         address_family_ipv4_multicast, -         address_family_ipv4_multicast_cmd, -         "address-family ipv4 multicast", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family modifier\n") +	vty->node = RIPNG_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_OSPFD, router_ospf, router_ospf_cmd, "router ospf [(1-65535)]", +	"Enable a routing process\n" +	"Start OSPF configuration\n" +	"Instance ID\n")  { -  vty->node = BGP_IPV4M_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -         address_family_ipv4_vpn, -         address_family_ipv4_vpn_cmd, -         "address-family ipv4 vpn", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family modifier\n") -{ -  vty->node = BGP_VPNV4_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -         address_family_ipv6, -         address_family_ipv6_cmd, -         "address-family ipv6 [unicast]", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family modifier\n") -{ -  vty->node = BGP_IPV6_NODE; -  return CMD_SUCCESS; +	vty->node = OSPF_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -         address_family_ipv6_multicast, -         address_family_ipv6_multicast_cmd, -         "address-family ipv6 multicast", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family modifier\n") +DEFUNSH(VTYSH_OSPF6D, router_ospf6, router_ospf6_cmd, "router ospf6", +	ROUTER_STR OSPF6_STR)  { -  vty->node = BGP_IPV6M_NODE; -  return CMD_SUCCESS; +	vty->node = OSPF6_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -         address_family_ipv6_vpn, -         address_family_ipv6_vpn_cmd, -         "address-family ipv6 vpn", -         "Enter Address Family command mode\n" -         "Address Family\n" -         "Address Family modifier\n") +#if defined(HAVE_LDPD) +DEFUNSH(VTYSH_LDPD, ldp_mpls_ldp, ldp_mpls_ldp_cmd, "mpls ldp", +	"Global MPLS configuration subcommands\n" +	"Label Distribution Protocol\n")  { -  vty->node = BGP_VPNV6_NODE; -  return CMD_SUCCESS; +	vty->node = LDP_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -	 address_family_evpn, -	 address_family_evpn_cmd, -	 "address-family <l2vpn evpn>", -         "Enter Address Family command mode\n" -         "EVPN Address family\n" -         "Layer2 VPN Address family\n" -         "Ethernet Virtual Private Network Subsequent Address Family\n") +DEFUNSH(VTYSH_LDPD, ldp_address_family_ipv4, ldp_address_family_ipv4_cmd, +	"address-family ipv4", +	"Configure Address Family and its parameters\n" +	"IPv4\n")  { -  vty->node = BGP_EVPN_NODE; -  return CMD_SUCCESS; +	vty->node = LDP_IPV4_NODE; +	return CMD_SUCCESS;  } -#if defined (ENABLE_BGP_VNC) -DEFUNSH (VTYSH_BGPD, -         vnc_defaults, -         vnc_defaults_cmd, -         "vnc defaults", -         "VNC/RFP related configuration\n" -         "Configure default NVE group\n") +DEFUNSH(VTYSH_LDPD, ldp_address_family_ipv6, ldp_address_family_ipv6_cmd, +	"address-family ipv6", +	"Configure Address Family and its parameters\n" +	"IPv6\n")  { -  vty->node = BGP_VNC_DEFAULTS_NODE; -  return CMD_SUCCESS; +	vty->node = LDP_IPV6_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -         vnc_nve_group, -         vnc_nve_group_cmd, -         "vnc nve-group NAME", -         "VNC/RFP related configuration\n" -         "Configure a NVE group\n" -         "Group name\n") +DEFUNSH(VTYSH_LDPD, ldp_interface_ifname, ldp_interface_ifname_cmd, +	"interface IFNAME", +	"Enable LDP on an interface and enter interface submode\n" +	"Interface's name\n")  { -  vty->node = BGP_VNC_NVE_GROUP_NODE; -  return CMD_SUCCESS; +	switch (vty->node) { +	case LDP_IPV4_NODE: +		vty->node = LDP_IPV4_IFACE_NODE; +		break; +	case LDP_IPV6_NODE: +		vty->node = LDP_IPV6_IFACE_NODE; +		break; +	default: +		break; +	} + +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -         vnc_vrf_policy, -         vnc_vrf_policy_cmd, -         "vrf-policy NAME", -         "Configure a VRF policy group\n" -         "Group name\n") +DEFUNSH(VTYSH_LDPD, ldp_l2vpn_word_type_vpls, ldp_l2vpn_word_type_vpls_cmd, +	"l2vpn WORD type vpls", +	"Configure l2vpn commands\n" +	"L2VPN name\n" +	"L2VPN type\n" +	"Virtual Private LAN Service\n")  { -  vty->node = BGP_VRF_POLICY_NODE; -  return CMD_SUCCESS; +	vty->node = LDP_L2VPN_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_BGPD, -         vnc_l2_group, -         vnc_l2_group_cmd, -         "vnc l2-group NAME", -         "VNC/RFP related configuration\n" -         "Configure a L2 group\n" -         "Group name\n") +DEFUNSH(VTYSH_LDPD, ldp_member_pseudowire_ifname, +	ldp_member_pseudowire_ifname_cmd, "member pseudowire IFNAME", +	"L2VPN member configuration\n" +	"Pseudowire interface\n" +	"Interface's name\n")  { -  vty->node = BGP_VNC_L2_GROUP_NODE; -  return CMD_SUCCESS; +	vty->node = LDP_PSEUDOWIRE_NODE; +	return CMD_SUCCESS;  }  #endif -DEFUNSH (VTYSH_RIPD, -	 key_chain, -	 key_chain_cmd, -	 "key chain WORD", -	 "Authentication key management\n" -	 "Key-chain management\n" -	 "Key-chain name\n") +DEFUNSH(VTYSH_ISISD, router_isis, router_isis_cmd, "router isis WORD", +	ROUTER_STR +	"ISO IS-IS\n" +	"ISO Routing area tag") +{ +	vty->node = ISIS_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_RMAP, vtysh_route_map, vtysh_route_map_cmd, +	"route-map WORD <deny|permit> (1-65535)", +	"Create route-map or enter route-map command mode\n" +	"Route map tag\n" +	"Route map denies set operations\n" +	"Route map permits set operations\n" +	"Sequence to insert to/delete from existing route-map entry\n") +{ +	vty->node = RMAP_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_ALL, vtysh_line_vty, vtysh_line_vty_cmd, "line vty", +	"Configure a terminal line\n" +	"Virtual terminal\n") +{ +	vty->node = VTY_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_REALLYALL, vtysh_enable, vtysh_enable_cmd, "enable", +	"Turn on privileged mode command\n") +{ +	vty->node = ENABLE_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_REALLYALL, vtysh_disable, vtysh_disable_cmd, "disable", +	"Turn off privileged mode command\n") +{ +	if (vty->node == ENABLE_NODE) +		vty->node = VIEW_NODE; +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal, vtysh_config_terminal_cmd, +	"configure terminal", +	"Configuration from vty interface\n" +	"Configuration terminal\n") +{ +	vty->node = CONFIG_NODE; +	return CMD_SUCCESS; +} + +static int vtysh_exit(struct vty *vty) +{ +	switch (vty->node) { +	case VIEW_NODE: +	case ENABLE_NODE: +		exit(0); +		break; +	case CONFIG_NODE: +		vty->node = ENABLE_NODE; +		break; +	case INTERFACE_NODE: +	case PW_NODE: +	case NS_NODE: +	case VRF_NODE: +	case ZEBRA_NODE: +	case BGP_NODE: +	case RIP_NODE: +	case RIPNG_NODE: +	case OSPF_NODE: +	case OSPF6_NODE: +	case LDP_NODE: +	case LDP_L2VPN_NODE: +	case ISIS_NODE: +	case MASC_NODE: +	case RMAP_NODE: +	case VTY_NODE: +	case KEYCHAIN_NODE: +		vtysh_execute("end"); +		vtysh_execute("configure terminal"); +		vty->node = CONFIG_NODE; +		break; +	case BGP_VPNV4_NODE: +	case BGP_VPNV6_NODE: +	case BGP_IPV4_NODE: +	case BGP_IPV4M_NODE: +	case BGP_IPV6_NODE: +	case BGP_IPV6M_NODE: +	case BGP_VRF_POLICY_NODE: +	case BGP_EVPN_NODE: +	case BGP_VNC_DEFAULTS_NODE: +	case BGP_VNC_NVE_GROUP_NODE: +	case BGP_VNC_L2_GROUP_NODE: +		vty->node = BGP_NODE; +		break; +	case LDP_IPV4_NODE: +	case LDP_IPV6_NODE: +		vty->node = LDP_NODE; +		break; +	case LDP_IPV4_IFACE_NODE: +		vty->node = LDP_IPV4_NODE; +		break; +	case LDP_IPV6_IFACE_NODE: +		vty->node = LDP_IPV6_NODE; +		break; +	case LDP_PSEUDOWIRE_NODE: +		vty->node = LDP_L2VPN_NODE; +		break; +	case KEYCHAIN_KEY_NODE: +		vty->node = KEYCHAIN_NODE; +		break; +	case LINK_PARAMS_NODE: +		vty->node = INTERFACE_NODE; +		break; +	default: +		break; +	} +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_REALLYALL, vtysh_exit_all, vtysh_exit_all_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  vty->node = KEYCHAIN_NODE; -  return CMD_SUCCESS; -}	  +	return vtysh_exit(vty); +} -DEFUNSH (VTYSH_RIPD, -	 key, -	 key_cmd, -	 "key (0-2147483647)", -	 "Configure a key\n" -	 "Key identifier number\n") -{ -  vty->node = KEYCHAIN_KEY_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_RIPD, -         router_rip, -         router_rip_cmd, -         "router rip", -         ROUTER_STR -         "RIP\n") -{ -  vty->node = RIP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_RIPNGD, -         router_ripng, -         router_ripng_cmd, -         "router ripng", -         ROUTER_STR -         "RIPng\n") -{ -  vty->node = RIPNG_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_OSPFD, -	 router_ospf, -	 router_ospf_cmd, -	 "router ospf [(1-65535)]", -	 "Enable a routing process\n" -	 "Start OSPF configuration\n" -         "Instance ID\n") -{ -  vty->node = OSPF_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_OSPF6D, -	 router_ospf6, -	 router_ospf6_cmd, -	 "router ospf6", -	 ROUTER_STR -	 OSPF6_STR) -{ -  vty->node = OSPF6_NODE; -  return CMD_SUCCESS; -} - -#if defined (HAVE_LDPD) -DEFUNSH (VTYSH_LDPD, -	 ldp_mpls_ldp, -	 ldp_mpls_ldp_cmd, -	 "mpls ldp", -	 "Global MPLS configuration subcommands\n" -	 "Label Distribution Protocol\n") -{ -  vty->node = LDP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_LDPD, -	 ldp_address_family_ipv4, -	 ldp_address_family_ipv4_cmd, -	 "address-family ipv4", -	 "Configure Address Family and its parameters\n" -	 "IPv4\n") -{ -  vty->node = LDP_IPV4_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_LDPD, -	 ldp_address_family_ipv6, -	 ldp_address_family_ipv6_cmd, -	 "address-family ipv6", -	 "Configure Address Family and its parameters\n" -	 "IPv6\n") -{ -  vty->node = LDP_IPV6_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_LDPD, -	 ldp_interface_ifname, -	 ldp_interface_ifname_cmd, -	 "interface IFNAME", -	 "Enable LDP on an interface and enter interface submode\n" -	 "Interface's name\n") -{ -  switch (vty->node) -    { -      case LDP_IPV4_NODE: -	vty->node = LDP_IPV4_IFACE_NODE; -	break; -      case LDP_IPV6_NODE: -	vty->node = LDP_IPV6_IFACE_NODE; -	break; -      default: -	break; -    } +DEFUNSH(VTYSH_ALL, vtysh_quit_all, vtysh_quit_all_cmd, "quit", +	"Exit current mode and down to previous mode\n") +{ +	return vtysh_exit_all(self, vty, argc, argv); +} -  return CMD_SUCCESS; +DEFUNSH(VTYSH_BGPD, exit_address_family, exit_address_family_cmd, +	"exit-address-family", "Exit from Address Family configuration mode\n") +{ +	if (vty->node == BGP_IPV4_NODE || vty->node == BGP_IPV4M_NODE +	    || vty->node == BGP_VPNV4_NODE || vty->node == BGP_VPNV6_NODE +	    || vty->node == BGP_IPV6_NODE || vty->node == BGP_IPV6M_NODE) +		vty->node = BGP_NODE; +	return CMD_SUCCESS;  } - -DEFUNSH (VTYSH_LDPD, -	 ldp_l2vpn_word_type_vpls, -	 ldp_l2vpn_word_type_vpls_cmd, -	 "l2vpn WORD type vpls", -	 "Configure l2vpn commands\n" -	 "L2VPN name\n" -	 "L2VPN type\n" -	 "Virtual Private LAN Service\n") + +DEFUNSH(VTYSH_BGPD, exit_vnc_config, exit_vnc_config_cmd, "exit-vnc", +	"Exit from VNC configuration mode\n")  { -  vty->node = LDP_L2VPN_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_LDPD, -	 ldp_member_pseudowire_ifname, -	 ldp_member_pseudowire_ifname_cmd, -	 "member pseudowire IFNAME", -	 "L2VPN member configuration\n" -	 "Pseudowire interface\n" -	 "Interface's name\n") -{ -  vty->node = LDP_PSEUDOWIRE_NODE; -  return CMD_SUCCESS; +	if (vty->node == BGP_VNC_DEFAULTS_NODE +	    || vty->node == BGP_VNC_NVE_GROUP_NODE +	    || vty->node == BGP_VNC_L2_GROUP_NODE) +		vty->node = BGP_NODE; +	return CMD_SUCCESS;  } -#endif -DEFUNSH (VTYSH_ISISD, -	 router_isis, -	 router_isis_cmd, -	 "router isis WORD", -	 ROUTER_STR -	 "ISO IS-IS\n" -	 "ISO Routing area tag") -{ -  vty->node = ISIS_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_RMAP, -	 vtysh_route_map, -	 vtysh_route_map_cmd, -	 "route-map WORD <deny|permit> (1-65535)", -	 "Create route-map or enter route-map command mode\n" -	 "Route map tag\n" -	 "Route map denies set operations\n" -	 "Route map permits set operations\n" -	 "Sequence to insert to/delete from existing route-map entry\n") -{ -  vty->node = RMAP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_ALL, -	 vtysh_line_vty, -	 vtysh_line_vty_cmd, -	 "line vty", -	 "Configure a terminal line\n" -	 "Virtual terminal\n") -{ -  vty->node = VTY_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_REALLYALL, -	 vtysh_enable, -	 vtysh_enable_cmd, -	 "enable", -	 "Turn on privileged mode command\n") -{ -  vty->node = ENABLE_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_REALLYALL, -	 vtysh_disable, -	 vtysh_disable_cmd, -	 "disable", -	 "Turn off privileged mode command\n") -{ -  if (vty->node == ENABLE_NODE) -    vty->node = VIEW_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_REALLYALL, -	 vtysh_config_terminal, -	 vtysh_config_terminal_cmd, -	 "configure terminal", -	 "Configuration from vty interface\n" -	 "Configuration terminal\n") -{ -  vty->node = CONFIG_NODE; -  return CMD_SUCCESS; -} - -static int -vtysh_exit (struct vty *vty) -{ -  switch (vty->node) -    { -    case VIEW_NODE: -    case ENABLE_NODE: -      exit (0); -      break; -    case CONFIG_NODE: -      vty->node = ENABLE_NODE; -      break; -    case INTERFACE_NODE: -    case PW_NODE: -    case NS_NODE: -    case VRF_NODE: -    case ZEBRA_NODE: -    case BGP_NODE: -    case RIP_NODE: -    case RIPNG_NODE: -    case OSPF_NODE: -    case OSPF6_NODE: -    case LDP_NODE: -    case LDP_L2VPN_NODE: -    case ISIS_NODE: -    case MASC_NODE: -    case RMAP_NODE: -    case VTY_NODE: -    case KEYCHAIN_NODE: -      vtysh_execute("end"); -      vtysh_execute("configure terminal"); -      vty->node = CONFIG_NODE; -      break; -    case BGP_VPNV4_NODE: -    case BGP_VPNV6_NODE: -    case BGP_IPV4_NODE: -    case BGP_IPV4M_NODE: -    case BGP_IPV6_NODE: -    case BGP_IPV6M_NODE: -    case BGP_VRF_POLICY_NODE: -    case BGP_EVPN_NODE: -    case BGP_VNC_DEFAULTS_NODE: -    case BGP_VNC_NVE_GROUP_NODE: -    case BGP_VNC_L2_GROUP_NODE: -      vty->node = BGP_NODE; -      break; -    case LDP_IPV4_NODE: -    case LDP_IPV6_NODE: -      vty->node = LDP_NODE; -      break; -    case LDP_IPV4_IFACE_NODE: -      vty->node = LDP_IPV4_NODE; -      break; -    case LDP_IPV6_IFACE_NODE: -      vty->node = LDP_IPV6_NODE; -      break; -    case LDP_PSEUDOWIRE_NODE: -      vty->node = LDP_L2VPN_NODE; -      break; -    case KEYCHAIN_KEY_NODE: -      vty->node = KEYCHAIN_NODE; -      break; -    case LINK_PARAMS_NODE: -      vty->node = INTERFACE_NODE; -      break; -    default: -      break; -    } -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_REALLYALL, -	 vtysh_exit_all, -	 vtysh_exit_all_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") -{ -  return vtysh_exit (vty); -} - -DEFUNSH (VTYSH_ALL, -         vtysh_quit_all, -         vtysh_quit_all_cmd, -         "quit", -         "Exit current mode and down to previous mode\n") -{ -  return vtysh_exit_all (self, vty, argc, argv); -} - -DEFUNSH (VTYSH_BGPD, -	 exit_address_family, -	 exit_address_family_cmd, -	 "exit-address-family", -	 "Exit from Address Family configuration mode\n") -{ -  if (vty->node == BGP_IPV4_NODE -      || vty->node == BGP_IPV4M_NODE -      || vty->node == BGP_VPNV4_NODE -      || vty->node == BGP_VPNV6_NODE -      || vty->node == BGP_IPV6_NODE -      || vty->node == BGP_IPV6M_NODE) -    vty->node = BGP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -	 exit_vnc_config, -	 exit_vnc_config_cmd, -	 "exit-vnc", -	 "Exit from VNC configuration mode\n") -{ -  if (vty->node == BGP_VNC_DEFAULTS_NODE -      || vty->node == BGP_VNC_NVE_GROUP_NODE -      || vty->node == BGP_VNC_L2_GROUP_NODE) -    vty->node = BGP_NODE; -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_BGPD, -	 exit_vrf_policy, -	 exit_vrf_policy_cmd, -	 "exit-vrf-policy", -	 "Exit from VRF  configuration mode\n") -{ -  if (vty->node == BGP_VRF_POLICY_NODE) -    vty->node = BGP_NODE; -  return CMD_SUCCESS; +DEFUNSH(VTYSH_BGPD, exit_vrf_policy, exit_vrf_policy_cmd, "exit-vrf-policy", +	"Exit from VRF  configuration mode\n") +{ +	if (vty->node == BGP_VRF_POLICY_NODE) +		vty->node = BGP_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_RIPD, -	 vtysh_exit_ripd, -	 vtysh_exit_ripd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RIPD, vtysh_exit_ripd, vtysh_exit_ripd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_RIPD, -	 vtysh_quit_ripd, -	 vtysh_quit_ripd_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RIPD, vtysh_quit_ripd, vtysh_quit_ripd_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_ripd (self, vty, argc, argv); +	return vtysh_exit_ripd(self, vty, argc, argv);  } -DEFUNSH (VTYSH_RIPNGD, -	 vtysh_exit_ripngd, -	 vtysh_exit_ripngd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RIPNGD, vtysh_exit_ripngd, vtysh_exit_ripngd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_RIPNGD, -	 vtysh_quit_ripngd, -	 vtysh_quit_ripngd_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RIPNGD, vtysh_quit_ripngd, vtysh_quit_ripngd_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_ripngd (self, vty, argc, argv); +	return vtysh_exit_ripngd(self, vty, argc, argv);  } -DEFUNSH (VTYSH_RMAP, -	 vtysh_exit_rmap, -	 vtysh_exit_rmap_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RMAP, vtysh_exit_rmap, vtysh_exit_rmap_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_RMAP, -	 vtysh_quit_rmap, -	 vtysh_quit_rmap_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_RMAP, vtysh_quit_rmap, vtysh_quit_rmap_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_rmap (self, vty, argc, argv); +	return vtysh_exit_rmap(self, vty, argc, argv);  } -DEFUNSH (VTYSH_BGPD, -	 vtysh_exit_bgpd, -	 vtysh_exit_bgpd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_BGPD, vtysh_exit_bgpd, vtysh_exit_bgpd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_BGPD, -	 vtysh_quit_bgpd, -	 vtysh_quit_bgpd_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_BGPD, vtysh_quit_bgpd, vtysh_quit_bgpd_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_bgpd (self, vty, argc, argv); +	return vtysh_exit_bgpd(self, vty, argc, argv);  } -DEFUNSH (VTYSH_OSPFD, -	 vtysh_exit_ospfd, -	 vtysh_exit_ospfd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_OSPFD, vtysh_exit_ospfd, vtysh_exit_ospfd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_OSPFD, -	 vtysh_quit_ospfd, -	 vtysh_quit_ospfd_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_OSPFD, vtysh_quit_ospfd, vtysh_quit_ospfd_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_ospfd (self, vty, argc, argv); +	return vtysh_exit_ospfd(self, vty, argc, argv);  } -DEFUNSH (VTYSH_OSPF6D, -	 vtysh_exit_ospf6d, -	 vtysh_exit_ospf6d_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_OSPF6D, vtysh_exit_ospf6d, vtysh_exit_ospf6d_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_OSPF6D, -         vtysh_quit_ospf6d, -         vtysh_quit_ospf6d_cmd, -         "quit", -         "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_OSPF6D, vtysh_quit_ospf6d, vtysh_quit_ospf6d_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_ospf6d (self, vty, argc, argv); +	return vtysh_exit_ospf6d(self, vty, argc, argv);  } -#if defined (HAVE_LDPD) -DEFUNSH (VTYSH_LDPD, -	 vtysh_exit_ldpd, -	 vtysh_exit_ldpd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +#if defined(HAVE_LDPD) +DEFUNSH(VTYSH_LDPD, vtysh_exit_ldpd, vtysh_exit_ldpd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -ALIAS (vtysh_exit_ldpd, -       vtysh_quit_ldpd_cmd, -       "quit", -       "Exit current mode and down to previous mode\n") +ALIAS(vtysh_exit_ldpd, vtysh_quit_ldpd_cmd, "quit", +      "Exit current mode and down to previous mode\n")  #endif -DEFUNSH (VTYSH_ISISD, -	 vtysh_exit_isisd, -	 vtysh_exit_isisd_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_ISISD, vtysh_exit_isisd, vtysh_exit_isisd_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_ISISD, -	 vtysh_quit_isisd, -	 vtysh_quit_isisd_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_ISISD, vtysh_quit_isisd, vtysh_quit_isisd_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_isisd (self, vty, argc, argv); +	return vtysh_exit_isisd(self, vty, argc, argv);  } -DEFUNSH (VTYSH_ALL, -         vtysh_exit_line_vty, -         vtysh_exit_line_vty_cmd, -         "exit", -         "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_ALL, vtysh_exit_line_vty, vtysh_exit_line_vty_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_ALL, -         vtysh_quit_line_vty, -         vtysh_quit_line_vty_cmd, -         "quit", -         "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_ALL, vtysh_quit_line_vty, vtysh_quit_line_vty_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_line_vty (self, vty, argc, argv); +	return vtysh_exit_line_vty(self, vty, argc, argv);  } -DEFUNSH (VTYSH_INTERFACE, -	 vtysh_interface, -	 vtysh_interface_cmd, -	 "interface IFNAME [vrf NAME]", -	 "Select an interface to configure\n" -	 "Interface's name\n" -         VRF_CMD_HELP_STR) +DEFUNSH(VTYSH_INTERFACE, vtysh_interface, vtysh_interface_cmd, +	"interface IFNAME [vrf NAME]", +	"Select an interface to configure\n" +	"Interface's name\n" VRF_CMD_HELP_STR)  { -  vty->node = INTERFACE_NODE; -  return CMD_SUCCESS; +	vty->node = INTERFACE_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ZEBRA, -	 vtysh_pseudowire, -	 vtysh_pseudowire_cmd, -	 "pseudowire IFNAME", -	 "Static pseudowire configuration\n" -	 "Pseudowire name\n") +DEFUNSH(VTYSH_ZEBRA, vtysh_pseudowire, vtysh_pseudowire_cmd, +	"pseudowire IFNAME", +	"Static pseudowire configuration\n" +	"Pseudowire name\n")  { -  vty->node = PW_NODE; -  return CMD_SUCCESS; +	vty->node = PW_NODE; +	return CMD_SUCCESS;  }  /* TODO Implement "no interface command in isisd. */ -DEFSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D, -       vtysh_no_interface_cmd, -       "no interface IFNAME", -       NO_STR -       "Delete a pseudo interface's configuration\n" -       "Interface's name\n") +DEFSH(VTYSH_ZEBRA | VTYSH_RIPD | VTYSH_RIPNGD | VTYSH_OSPFD | VTYSH_OSPF6D, +      vtysh_no_interface_cmd, "no interface IFNAME", NO_STR +      "Delete a pseudo interface's configuration\n" +      "Interface's name\n") -DEFSH (VTYSH_ZEBRA, -       vtysh_no_interface_vrf_cmd, -       "no interface IFNAME vrf NAME", -       NO_STR -       "Delete a pseudo interface's configuration\n" -       "Interface's name\n" -       VRF_CMD_HELP_STR) +DEFSH(VTYSH_ZEBRA, vtysh_no_interface_vrf_cmd, "no interface IFNAME vrf NAME", +      NO_STR +      "Delete a pseudo interface's configuration\n" +      "Interface's name\n" VRF_CMD_HELP_STR) -DEFUNSH (VTYSH_NS, -         vtysh_ns, -         vtysh_ns_cmd, -         "logical-router (1-65535) ns NAME", -	 "Enable a logical-router\n" -         "Specify the logical-router indentifier\n" -         "The Name Space\n" -         "The file name in " NS_RUN_DIR ", or a full pathname\n") +DEFUNSH(VTYSH_NS, vtysh_ns, vtysh_ns_cmd, "logical-router (1-65535) ns NAME", +	"Enable a logical-router\n" +	"Specify the logical-router indentifier\n" +	"The Name Space\n" +	"The file name in " NS_RUN_DIR ", or a full pathname\n")  { -  vty->node = NS_NODE; -  return CMD_SUCCESS; +	vty->node = NS_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_VRF, -	 vtysh_vrf, -	 vtysh_vrf_cmd, -	 "vrf NAME", -	 "Select a VRF to configure\n" -	 "VRF's name\n") +DEFUNSH(VTYSH_VRF, vtysh_vrf, vtysh_vrf_cmd, "vrf NAME", +	"Select a VRF to configure\n" +	"VRF's name\n")  { -  vty->node = VRF_NODE; -  return CMD_SUCCESS; +	vty->node = VRF_NODE; +	return CMD_SUCCESS;  } -DEFSH (VTYSH_ZEBRA, -       vtysh_no_vrf_cmd, -       "no vrf NAME", -       NO_STR -       "Delete a pseudo vrf's configuration\n" -       "VRF's name\n") +DEFSH(VTYSH_ZEBRA, vtysh_no_vrf_cmd, "no vrf NAME", NO_STR +      "Delete a pseudo vrf's configuration\n" +      "VRF's name\n") -DEFUNSH (VTYSH_NS, -         vtysh_exit_ns, -         vtysh_exit_ns_cmd, -         "exit", -         "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_NS, vtysh_exit_ns, vtysh_exit_ns_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_NS, -         vtysh_quit_ns, -         vtysh_quit_ns_cmd, -         "quit", -         "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_NS, vtysh_quit_ns, vtysh_quit_ns_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_ns(self, vty, argc, argv); +	return vtysh_exit_ns(self, vty, argc, argv);  } -DEFUNSH (VTYSH_VRF, -	 vtysh_exit_vrf, -	 vtysh_exit_vrf_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_VRF, vtysh_exit_vrf, vtysh_exit_vrf_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_VRF, -	 vtysh_quit_vrf, -	 vtysh_quit_vrf_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_VRF, vtysh_quit_vrf, vtysh_quit_vrf_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_vrf (self, vty, argc, argv); +	return vtysh_exit_vrf(self, vty, argc, argv);  }  /* TODO Implement interface description commands in ripngd, ospf6d   * and isisd. */ -DEFSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_OSPFD, -       vtysh_interface_desc_cmd, -       "description LINE...", -       "Interface specific description\n" -       "Characters describing this interface\n") -        -DEFSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_OSPFD, -       vtysh_no_interface_desc_cmd, -       "no description", -       NO_STR -       "Interface specific description\n") +DEFSH(VTYSH_ZEBRA | VTYSH_RIPD | VTYSH_OSPFD, vtysh_interface_desc_cmd, +      "description LINE...", +      "Interface specific description\n" +      "Characters describing this interface\n") -DEFUNSH (VTYSH_INTERFACE, -	 vtysh_exit_interface, -	 vtysh_exit_interface_cmd, -	 "exit", -	 "Exit current mode and down to previous mode\n") +DEFSH(VTYSH_ZEBRA | VTYSH_RIPD | VTYSH_OSPFD, vtysh_no_interface_desc_cmd, +      "no description", NO_STR "Interface specific description\n") + +DEFUNSH(VTYSH_INTERFACE, vtysh_exit_interface, vtysh_exit_interface_cmd, "exit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit (vty); +	return vtysh_exit(vty);  } -DEFUNSH (VTYSH_INTERFACE, -	 vtysh_quit_interface, -	 vtysh_quit_interface_cmd, -	 "quit", -	 "Exit current mode and down to previous mode\n") +DEFUNSH(VTYSH_INTERFACE, vtysh_quit_interface, vtysh_quit_interface_cmd, "quit", +	"Exit current mode and down to previous mode\n")  { -  return vtysh_exit_interface (self, vty, argc, argv); +	return vtysh_exit_interface(self, vty, argc, argv);  }  DEFUN (vtysh_show_thread, @@ -1917,21 +1579,22 @@ DEFUN (vtysh_show_thread,        "Thread CPU usage\n"        "Display filter (rwtexb)\n")  { -  int idx_filter = 3; -  unsigned int i; -  int ret = CMD_SUCCESS; -  char line[100]; +	int idx_filter = 3; +	unsigned int i; +	int ret = CMD_SUCCESS; +	char line[100]; -  sprintf(line, "show thread cpu %s\n", (argc == 4) ? argv[idx_filter]->arg : ""); -  for (i = 0; i < array_size(vtysh_client); i++) -    if ( vtysh_client[i].fd >= 0 ) -      { -        fprintf (stdout, "Thread statistics for %s:\n", -                 vtysh_client[i].name); -        ret = vtysh_client_execute (&vtysh_client[i], line, stdout); -        fprintf (stdout,"\n"); -      } -  return ret; +	sprintf(line, "show thread cpu %s\n", +		(argc == 4) ? argv[idx_filter]->arg : ""); +	for (i = 0; i < array_size(vtysh_client); i++) +		if (vtysh_client[i].fd >= 0) { +			fprintf(stdout, "Thread statistics for %s:\n", +				vtysh_client[i].name); +			ret = vtysh_client_execute(&vtysh_client[i], line, +						   stdout); +			fprintf(stdout, "\n"); +		} +	return ret;  }  DEFUN (vtysh_show_work_queues, @@ -1940,20 +1603,20 @@ DEFUN (vtysh_show_work_queues,         SHOW_STR         "Work Queue information\n")  { -  unsigned int i; -  int ret = CMD_SUCCESS; -  char line[] = "show work-queues\n"; +	unsigned int i; +	int ret = CMD_SUCCESS; +	char line[] = "show work-queues\n"; -  for (i = 0; i < array_size(vtysh_client); i++) -    if ( vtysh_client[i].fd >= 0 ) -      { -        fprintf (stdout, "Work queue statistics for %s:\n", -                 vtysh_client[i].name); -        ret = vtysh_client_execute (&vtysh_client[i], line, stdout); -        fprintf (stdout,"\n"); -      } +	for (i = 0; i < array_size(vtysh_client); i++) +		if (vtysh_client[i].fd >= 0) { +			fprintf(stdout, "Work queue statistics for %s:\n", +				vtysh_client[i].name); +			ret = vtysh_client_execute(&vtysh_client[i], line, +						   stdout); +			fprintf(stdout, "\n"); +		} -  return ret; +	return ret;  }  DEFUN (vtysh_show_work_queues_daemon, @@ -1969,59 +1632,50 @@ DEFUN (vtysh_show_work_queues_daemon,         "For the bgp daemon\n"         "For the isis daemon\n")  { -  int idx_protocol = 2; -  unsigned int i; -  int ret = CMD_SUCCESS; +	int idx_protocol = 2; +	unsigned int i; +	int ret = CMD_SUCCESS; -  for (i = 0; i < array_size(vtysh_client); i++) -    { -      if (strmatch(vtysh_client[i].name, argv[idx_protocol]->text)) -        break; -    } +	for (i = 0; i < array_size(vtysh_client); i++) { +		if (strmatch(vtysh_client[i].name, argv[idx_protocol]->text)) +			break; +	} -  ret = vtysh_client_execute(&vtysh_client[i], "show work-queues\n", stdout); +	ret = vtysh_client_execute(&vtysh_client[i], "show work-queues\n", +				   stdout); -  return ret; +	return ret;  } -DEFUNSH (VTYSH_ZEBRA, -         vtysh_link_params, -         vtysh_link_params_cmd, -         "link-params", -         LINK_PARAMS_STR -         ) +DEFUNSH(VTYSH_ZEBRA, vtysh_link_params, vtysh_link_params_cmd, "link-params", +	LINK_PARAMS_STR)  { -  vty->node = LINK_PARAMS_NODE; -  return CMD_SUCCESS; +	vty->node = LINK_PARAMS_NODE; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ZEBRA, -	 exit_link_params, -	 exit_link_params_cmd, -	 "exit-link-params", -	 "Exit from Link Params configuration node\n") +DEFUNSH(VTYSH_ZEBRA, exit_link_params, exit_link_params_cmd, "exit-link-params", +	"Exit from Link Params configuration node\n")  { -  if (vty->node == LINK_PARAMS_NODE) -    vty->node = INTERFACE_NODE; -  return CMD_SUCCESS; +	if (vty->node == LINK_PARAMS_NODE) +		vty->node = INTERFACE_NODE; +	return CMD_SUCCESS;  } -static int -show_per_daemon (const char *line, const char *headline) +static int show_per_daemon(const char *line, const char *headline)  { -  unsigned int i; -  int ret = CMD_SUCCESS; +	unsigned int i; +	int ret = CMD_SUCCESS; -  for (i = 0; i < array_size(vtysh_client); i++) -    if ( vtysh_client[i].fd >= 0 ) -      { -        fprintf (stdout, headline, -                 vtysh_client[i].name); -        ret = vtysh_client_execute (&vtysh_client[i], line, stdout); -        fprintf (stdout,"\n"); -      } +	for (i = 0; i < array_size(vtysh_client); i++) +		if (vtysh_client[i].fd >= 0) { +			fprintf(stdout, headline, vtysh_client[i].name); +			ret = vtysh_client_execute(&vtysh_client[i], line, +						   stdout); +			fprintf(stdout, "\n"); +		} -  return ret; +	return ret;  }  /* Memory */ @@ -2031,7 +1685,7 @@ DEFUN (vtysh_show_memory,         SHOW_STR         "Memory statistics\n")  { -  return show_per_daemon ("show memory\n", "Memory statistics for %s:\n"); +	return show_per_daemon("show memory\n", "Memory statistics for %s:\n");  }  DEFUN (vtysh_show_modules, @@ -2040,7 +1694,8 @@ DEFUN (vtysh_show_modules,         SHOW_STR         "Loaded modules\n")  { -  return show_per_daemon ("show modules\n", "Module information for %s:\n"); +	return show_per_daemon("show modules\n", +			       "Module information for %s:\n");  }  /* Logging commands. */ @@ -2050,306 +1705,241 @@ DEFUN (vtysh_show_logging,         SHOW_STR         "Show current logging configuration\n")  { -  unsigned int i; -  int ret = CMD_SUCCESS; -  char line[] = "show logging\n"; -   -  for (i = 0; i < array_size(vtysh_client); i++) -    if ( vtysh_client[i].fd >= 0 ) -      { -        fprintf (stdout,"Logging configuration for %s:\n",  -                 vtysh_client[i].name); -        ret = vtysh_client_execute (&vtysh_client[i], line, stdout); -        fprintf (stdout,"\n"); -      } -   -  return ret; -} - -DEFUNSH (VTYSH_ALL, -	 vtysh_log_stdout, -	 vtysh_log_stdout_cmd, -	 "log stdout", -	 "Logging control\n" -	 "Set stdout logging level\n") -{ -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_ALL, -	 vtysh_log_stdout_level, -	 vtysh_log_stdout_level_cmd, -	 "log stdout <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", -	 "Logging control\n" -	 "Set stdout logging level\n" -	 LOG_LEVEL_DESC) +	unsigned int i; +	int ret = CMD_SUCCESS; +	char line[] = "show logging\n"; + +	for (i = 0; i < array_size(vtysh_client); i++) +		if (vtysh_client[i].fd >= 0) { +			fprintf(stdout, "Logging configuration for %s:\n", +				vtysh_client[i].name); +			ret = vtysh_client_execute(&vtysh_client[i], line, +						   stdout); +			fprintf(stdout, "\n"); +		} + +	return ret; +} + +DEFUNSH(VTYSH_ALL, vtysh_log_stdout, vtysh_log_stdout_cmd, "log stdout", +	"Logging control\n" +	"Set stdout logging level\n") +{ +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_ALL, vtysh_log_stdout_level, vtysh_log_stdout_level_cmd, +	"log stdout <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", +	"Logging control\n" +	"Set stdout logging level\n" LOG_LEVEL_DESC)  { -  return CMD_SUCCESS; -} - -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_stdout, -	 no_vtysh_log_stdout_cmd, -	 "no log stdout [LEVEL]", -	 NO_STR -	 "Logging control\n" -	 "Cancel logging to stdout\n" -	 "Logging level\n") +	return CMD_SUCCESS; +} + +DEFUNSH(VTYSH_ALL, no_vtysh_log_stdout, no_vtysh_log_stdout_cmd, +	"no log stdout [LEVEL]", NO_STR +	"Logging control\n" +	"Cancel logging to stdout\n" +	"Logging level\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_file, -	 vtysh_log_file_cmd, -	 "log file FILENAME", -	 "Logging control\n" -	 "Logging to file\n" -	 "Logging filename\n") +DEFUNSH(VTYSH_ALL, vtysh_log_file, vtysh_log_file_cmd, "log file FILENAME", +	"Logging control\n" +	"Logging to file\n" +	"Logging filename\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_file_level, -	 vtysh_log_file_level_cmd, -	 "log file FILENAME <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", -	 "Logging control\n" -	 "Logging to file\n" -	 "Logging filename\n" -	 LOG_LEVEL_DESC) +DEFUNSH(VTYSH_ALL, vtysh_log_file_level, vtysh_log_file_level_cmd, +	"log file FILENAME <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", +	"Logging control\n" +	"Logging to file\n" +	"Logging filename\n" LOG_LEVEL_DESC)  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_file, -	 no_vtysh_log_file_cmd, -	 "no log file [FILENAME [LEVEL]]", -	 NO_STR -	 "Logging control\n" -	 "Cancel logging to file\n" -	 "Logging file name\n" -         "Logging level\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_file, no_vtysh_log_file_cmd, +	"no log file [FILENAME [LEVEL]]", NO_STR +	"Logging control\n" +	"Cancel logging to file\n" +	"Logging file name\n" +	"Logging level\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_monitor, -	 vtysh_log_monitor_cmd, -	 "log monitor [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>]", -	 "Logging control\n" -	 "Set terminal line (monitor) logging level\n" -         LOG_LEVEL_DESC) +DEFUNSH(VTYSH_ALL, vtysh_log_monitor, vtysh_log_monitor_cmd, +	"log monitor [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>]", +	"Logging control\n" +	"Set terminal line (monitor) logging level\n" LOG_LEVEL_DESC)  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_monitor, -	 no_vtysh_log_monitor_cmd, -	 "no log monitor [LEVEL]", -	 NO_STR -	 "Logging control\n" -	 "Disable terminal line (monitor) logging\n" -	 "Logging level\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_monitor, no_vtysh_log_monitor_cmd, +	"no log monitor [LEVEL]", NO_STR +	"Logging control\n" +	"Disable terminal line (monitor) logging\n" +	"Logging level\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_syslog, -	 vtysh_log_syslog_cmd, -	 "log syslog [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>]", -	 "Logging control\n" -	 "Set syslog logging level\n" -         LOG_LEVEL_DESC) +DEFUNSH(VTYSH_ALL, vtysh_log_syslog, vtysh_log_syslog_cmd, +	"log syslog [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>]", +	"Logging control\n" +	"Set syslog logging level\n" LOG_LEVEL_DESC)  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_syslog, -	 no_vtysh_log_syslog_cmd, -	 "no log syslog [LEVEL]", -	 NO_STR -	 "Logging control\n" -	 "Cancel logging to syslog\n" -	 "Logging level\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_syslog, no_vtysh_log_syslog_cmd, +	"no log syslog [LEVEL]", NO_STR +	"Logging control\n" +	"Cancel logging to syslog\n" +	"Logging level\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_facility, -	 vtysh_log_facility_cmd, -	 "log facility <kern|user|mail|daemon|auth|syslog|lpr|news|uucp|cron|local0|local1|local2|local3|local4|local5|local6|local7>", -	 "Logging control\n" -	 "Facility parameter for syslog messages\n" -	 LOG_FACILITY_DESC) +DEFUNSH(VTYSH_ALL, vtysh_log_facility, vtysh_log_facility_cmd, +	"log facility <kern|user|mail|daemon|auth|syslog|lpr|news|uucp|cron|local0|local1|local2|local3|local4|local5|local6|local7>", +	"Logging control\n" +	"Facility parameter for syslog messages\n" LOG_FACILITY_DESC)  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_facility, -	 no_vtysh_log_facility_cmd, -	 "no log facility [FACILITY]", -	 NO_STR -	 "Logging control\n" -	 "Reset syslog facility to default (daemon)\n" -	 "Syslog facility\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_facility, no_vtysh_log_facility_cmd, +	"no log facility [FACILITY]", NO_STR +	"Logging control\n" +	"Reset syslog facility to default (daemon)\n" +	"Syslog facility\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH_DEPRECATED (VTYSH_ALL, -		    vtysh_log_trap, -		    vtysh_log_trap_cmd, -		    "log trap <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", -		    "Logging control\n" -		    "(Deprecated) Set logging level and default for all destinations\n" -		    LOG_LEVEL_DESC) +DEFUNSH_DEPRECATED( +	VTYSH_ALL, vtysh_log_trap, vtysh_log_trap_cmd, +	"log trap <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>", +	"Logging control\n" +	"(Deprecated) Set logging level and default for all destinations\n" LOG_LEVEL_DESC)  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH_DEPRECATED (VTYSH_ALL, -		    no_vtysh_log_trap, -		    no_vtysh_log_trap_cmd, -		    "no log trap [LEVEL]", -		    NO_STR -		    "Logging control\n" -		    "Permit all logging information\n" -		    "Logging level\n") +DEFUNSH_DEPRECATED(VTYSH_ALL, no_vtysh_log_trap, no_vtysh_log_trap_cmd, +		   "no log trap [LEVEL]", NO_STR +		   "Logging control\n" +		   "Permit all logging information\n" +		   "Logging level\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_record_priority, -	 vtysh_log_record_priority_cmd, -	 "log record-priority", -	 "Logging control\n" -	 "Log the priority of the message within the message\n") +DEFUNSH(VTYSH_ALL, vtysh_log_record_priority, vtysh_log_record_priority_cmd, +	"log record-priority", +	"Logging control\n" +	"Log the priority of the message within the message\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_record_priority, -	 no_vtysh_log_record_priority_cmd, -	 "no log record-priority", -	 NO_STR -	 "Logging control\n" -	 "Do not log the priority of the message within the message\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_record_priority, +	no_vtysh_log_record_priority_cmd, "no log record-priority", NO_STR +	"Logging control\n" +	"Do not log the priority of the message within the message\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_log_timestamp_precision, -	 vtysh_log_timestamp_precision_cmd, -	 "log timestamp precision (0-6)", -	 "Logging control\n" -	 "Timestamp configuration\n" -	 "Set the timestamp precision\n" -	 "Number of subsecond digits\n") +DEFUNSH(VTYSH_ALL, vtysh_log_timestamp_precision, +	vtysh_log_timestamp_precision_cmd, "log timestamp precision (0-6)", +	"Logging control\n" +	"Timestamp configuration\n" +	"Set the timestamp precision\n" +	"Number of subsecond digits\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_log_timestamp_precision, -	 no_vtysh_log_timestamp_precision_cmd, -	 "no log timestamp precision", -	 NO_STR -	 "Logging control\n" -	 "Timestamp configuration\n" -	 "Reset the timestamp precision to the default value of 0\n") +DEFUNSH(VTYSH_ALL, no_vtysh_log_timestamp_precision, +	no_vtysh_log_timestamp_precision_cmd, "no log timestamp precision", +	NO_STR +	"Logging control\n" +	"Timestamp configuration\n" +	"Reset the timestamp precision to the default value of 0\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_service_password_encrypt, -	 vtysh_service_password_encrypt_cmd, -	 "service password-encryption", -	 "Set up miscellaneous service\n" -	 "Enable encrypted passwords\n") +DEFUNSH(VTYSH_ALL, vtysh_service_password_encrypt, +	vtysh_service_password_encrypt_cmd, "service password-encryption", +	"Set up miscellaneous service\n" +	"Enable encrypted passwords\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_service_password_encrypt, -	 no_vtysh_service_password_encrypt_cmd, -	 "no service password-encryption", -	 NO_STR -	 "Set up miscellaneous service\n" -	 "Enable encrypted passwords\n") +DEFUNSH(VTYSH_ALL, no_vtysh_service_password_encrypt, +	no_vtysh_service_password_encrypt_cmd, "no service password-encryption", +	NO_STR +	"Set up miscellaneous service\n" +	"Enable encrypted passwords\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_config_password, -	 vtysh_password_cmd, -	 "password (8-8) WORD", -	 "Assign the terminal connection password\n" -	 "Specifies a HIDDEN password will follow\n" -	 "dummy string \n" -	 "The HIDDEN line password string\n") +DEFUNSH(VTYSH_ALL, vtysh_config_password, vtysh_password_cmd, +	"password (8-8) WORD", +	"Assign the terminal connection password\n" +	"Specifies a HIDDEN password will follow\n" +	"dummy string \n" +	"The HIDDEN line password string\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_password_text, -	 vtysh_password_text_cmd, -	 "password LINE", -	 "Assign the terminal connection password\n" -	 "The UNENCRYPTED (cleartext) line password\n") +DEFUNSH(VTYSH_ALL, vtysh_password_text, vtysh_password_text_cmd, +	"password LINE", +	"Assign the terminal connection password\n" +	"The UNENCRYPTED (cleartext) line password\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_config_enable_password, -	 vtysh_enable_password_cmd, -	 "enable password (8-8) WORD", -	 "Modify enable password parameters\n" -	 "Assign the privileged level password\n" -	 "Specifies a HIDDEN password will follow\n" -	 "The HIDDEN 'enable' password string\n") +DEFUNSH(VTYSH_ALL, vtysh_config_enable_password, vtysh_enable_password_cmd, +	"enable password (8-8) WORD", +	"Modify enable password parameters\n" +	"Assign the privileged level password\n" +	"Specifies a HIDDEN password will follow\n" +	"The HIDDEN 'enable' password string\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 vtysh_enable_password_text, -	 vtysh_enable_password_text_cmd, -	 "enable password LINE", -	 "Modify enable password parameters\n" -	 "Assign the privileged level password\n" -	 "The UNENCRYPTED (cleartext) 'enable' password\n") +DEFUNSH(VTYSH_ALL, vtysh_enable_password_text, vtysh_enable_password_text_cmd, +	"enable password LINE", +	"Modify enable password parameters\n" +	"Assign the privileged level password\n" +	"The UNENCRYPTED (cleartext) 'enable' password\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  } -DEFUNSH (VTYSH_ALL, -	 no_vtysh_config_enable_password, -	 no_vtysh_enable_password_cmd, -	 "no enable password", -	 NO_STR -	 "Modify enable password parameters\n" -	 "Assign the privileged level password\n") +DEFUNSH(VTYSH_ALL, no_vtysh_config_enable_password, +	no_vtysh_enable_password_cmd, "no enable password", NO_STR +	"Modify enable password parameters\n" +	"Assign the privileged level password\n")  { -  return CMD_SUCCESS; +	return CMD_SUCCESS;  }  DEFUN (vtysh_write_terminal, @@ -2367,49 +1957,44 @@ DEFUN (vtysh_write_terminal,         "For the isis daemon\n"         "For the pim daemon\n")  { -  u_int i; -  char line[] = "write terminal\n"; -  FILE *fp = NULL; - -  if (vtysh_pager_name) -    { -      fp = popen (vtysh_pager_name, "w"); -      if (fp == NULL) -        { -          perror ("popen"); -          exit (1); -        } -    } -  else -    fp = stdout; - -  vty_out (vty, "Building configuration...%s", VTY_NEWLINE); -  vty_out (vty, "%sCurrent configuration:%s", VTY_NEWLINE, -           VTY_NEWLINE); -  vty_out (vty, "!%s", VTY_NEWLINE); - -  for (i = 0; i < array_size(vtysh_client); i++) -    if ((argc < 3 ) || (strmatch (vtysh_client[i].name, argv[2]->text))) -      vtysh_client_config (&vtysh_client[i], line); - -  /* Integrate vtysh specific configuration. */ -  vtysh_config_write (); - -  vtysh_config_dump (fp); - -  if (vtysh_pager_name && fp) -    { -      fflush (fp); -      if (pclose (fp) == -1) -        { -          perror ("pclose"); -          exit (1); -        } -      fp = NULL; -    } - -  vty_out (vty, "end%s", VTY_NEWLINE); -  return CMD_SUCCESS; +	u_int i; +	char line[] = "write terminal\n"; +	FILE *fp = NULL; + +	if (vtysh_pager_name) { +		fp = popen(vtysh_pager_name, "w"); +		if (fp == NULL) { +			perror("popen"); +			exit(1); +		} +	} else +		fp = stdout; + +	vty_out(vty, "Building configuration...%s", VTY_NEWLINE); +	vty_out(vty, "%sCurrent configuration:%s", VTY_NEWLINE, VTY_NEWLINE); +	vty_out(vty, "!%s", VTY_NEWLINE); + +	for (i = 0; i < array_size(vtysh_client); i++) +		if ((argc < 3) +		    || (strmatch(vtysh_client[i].name, argv[2]->text))) +			vtysh_client_config(&vtysh_client[i], line); + +	/* Integrate vtysh specific configuration. */ +	vtysh_config_write(); + +	vtysh_config_dump(fp); + +	if (vtysh_pager_name && fp) { +		fflush(fp); +		if (pclose(fp) == -1) { +			perror("pclose"); +			exit(1); +		} +		fp = NULL; +	} + +	vty_out(vty, "end%s", VTY_NEWLINE); +	return CMD_SUCCESS;  }  DEFUN (vtysh_show_running_config, @@ -2427,7 +2012,7 @@ DEFUN (vtysh_show_running_config,         "For the isis daemon\n"         "For the pim daemon\n")  { -  return vtysh_write_terminal (self, vty, argc, argv); +	return vtysh_write_terminal(self, vty, argc, argv);  }  DEFUN (vtysh_integrated_config, @@ -2436,8 +2021,8 @@ DEFUN (vtysh_integrated_config,         "Set up miscellaneous service\n"         "Write configuration into integrated file\n")  { -  vtysh_write_integrated = WRITE_INTEGRATED_YES; -  return CMD_SUCCESS; +	vtysh_write_integrated = WRITE_INTEGRATED_YES; +	return CMD_SUCCESS;  }  DEFUN (no_vtysh_integrated_config, @@ -2447,132 +2032,123 @@ DEFUN (no_vtysh_integrated_config,         "Set up miscellaneous service\n"         "Write configuration into integrated file\n")  { -  vtysh_write_integrated = WRITE_INTEGRATED_NO; -  return CMD_SUCCESS; +	vtysh_write_integrated = WRITE_INTEGRATED_NO; +	return CMD_SUCCESS;  } -static void -backup_config_file (const char *fbackup) +static void backup_config_file(const char *fbackup)  { -  char *integrate_sav = NULL; +	char *integrate_sav = NULL; -  integrate_sav = malloc (strlen (fbackup) + -			  strlen (CONF_BACKUP_EXT) + 1); -  strcpy (integrate_sav, fbackup); -  strcat (integrate_sav, CONF_BACKUP_EXT); +	integrate_sav = malloc(strlen(fbackup) + strlen(CONF_BACKUP_EXT) + 1); +	strcpy(integrate_sav, fbackup); +	strcat(integrate_sav, CONF_BACKUP_EXT); -  /* Move current configuration file to backup config file. */ -  unlink (integrate_sav); -  rename (fbackup, integrate_sav); -  free (integrate_sav); +	/* Move current configuration file to backup config file. */ +	unlink(integrate_sav); +	rename(fbackup, integrate_sav); +	free(integrate_sav);  } -int -vtysh_write_config_integrated(void) +int vtysh_write_config_integrated(void)  { -  u_int i; -  char line[] = "write terminal\n"; -  FILE *fp; -  int fd; -  struct passwd *pwentry; -  struct group *grentry; -  uid_t uid = -1; -  gid_t gid = -1; -  struct stat st; -  int err = 0; +	u_int i; +	char line[] = "write terminal\n"; +	FILE *fp; +	int fd; +	struct passwd *pwentry; +	struct group *grentry; +	uid_t uid = -1; +	gid_t gid = -1; +	struct stat st; +	int err = 0; -  fprintf (stdout,"Building Configuration...\n"); +	fprintf(stdout, "Building Configuration...\n"); -  backup_config_file(quagga_config); -  fp = fopen (quagga_config, "w"); -  if (fp == NULL) -    { -      fprintf (stdout,"%% Error: failed to open configuration file %s: %s\n", -	       quagga_config, safe_strerror(errno)); -      return CMD_WARNING; -    } -  fd = fileno (fp); +	backup_config_file(quagga_config); +	fp = fopen(quagga_config, "w"); +	if (fp == NULL) { +		fprintf(stdout, +			"%% Error: failed to open configuration file %s: %s\n", +			quagga_config, safe_strerror(errno)); +		return CMD_WARNING; +	} +	fd = fileno(fp); -  for (i = 0; i < array_size(vtysh_client); i++) -    vtysh_client_config (&vtysh_client[i], line); +	for (i = 0; i < array_size(vtysh_client); i++) +		vtysh_client_config(&vtysh_client[i], line); -  vtysh_config_write (); -  vtysh_config_dump (fp); +	vtysh_config_write(); +	vtysh_config_dump(fp); -  if (fchmod (fd, CONFIGFILE_MASK) != 0) -    { -      printf ("%% Warning: can't chmod configuration file %s: %s\n", -              quagga_config, safe_strerror(errno)); -      err++; -    } +	if (fchmod(fd, CONFIGFILE_MASK) != 0) { +		printf("%% Warning: can't chmod configuration file %s: %s\n", +		       quagga_config, safe_strerror(errno)); +		err++; +	}  #ifdef FRR_USER -  pwentry = getpwnam (FRR_USER); -  if (pwentry) -    uid = pwentry->pw_uid; -  else -    { -      printf ("%% Warning: could not look up user \"%s\"\n", FRR_USER); -      err++; -    } +	pwentry = getpwnam(FRR_USER); +	if (pwentry) +		uid = pwentry->pw_uid; +	else { +		printf("%% Warning: could not look up user \"%s\"\n", FRR_USER); +		err++; +	}  #endif  #ifdef FRR_GROUP -  grentry = getgrnam (FRR_GROUP); -  if (grentry) -    gid = grentry->gr_gid; -  else -    { -      printf ("%% Warning: could not look up group \"%s\"\n", FRR_GROUP); -      err++; -    } +	grentry = getgrnam(FRR_GROUP); +	if (grentry) +		gid = grentry->gr_gid; +	else { +		printf("%% Warning: could not look up group \"%s\"\n", +		       FRR_GROUP); +		err++; +	}  #endif -  if (!fstat (fd, &st)) -    { -      if (st.st_uid == uid) -        uid = -1; -      if (st.st_gid == gid) -        gid = -1; -      if ((uid != (uid_t)-1 || gid != (gid_t)-1) && fchown (fd, uid, gid)) -        { -          printf ("%% Warning: can't chown configuration file %s: %s\n", -                  quagga_config, safe_strerror(errno)); -          err++; -        } -    } -  else -    { -      printf ("%% Warning: stat() failed on %s: %s\n", -              quagga_config, safe_strerror(errno)); -      err++; -    } - -  fclose (fp); - -  printf ("Integrated configuration saved to %s\n", quagga_config); -  if (err) -    return CMD_WARNING; - -  printf ("[OK]\n"); -  return CMD_SUCCESS; +	if (!fstat(fd, &st)) { +		if (st.st_uid == uid) +			uid = -1; +		if (st.st_gid == gid) +			gid = -1; +		if ((uid != (uid_t)-1 || gid != (gid_t)-1) +		    && fchown(fd, uid, gid)) { +			printf("%% Warning: can't chown configuration file %s: %s\n", +			       quagga_config, safe_strerror(errno)); +			err++; +		} +	} else { +		printf("%% Warning: stat() failed on %s: %s\n", quagga_config, +		       safe_strerror(errno)); +		err++; +	} + +	fclose(fp); + +	printf("Integrated configuration saved to %s\n", quagga_config); +	if (err) +		return CMD_WARNING; + +	printf("[OK]\n"); +	return CMD_SUCCESS;  }  static bool want_config_integrated(void)  { -  struct stat s; - -  switch (vtysh_write_integrated) -    { -    case WRITE_INTEGRATED_UNSPECIFIED: -      if (stat(quagga_config, &s) && errno == ENOENT) -        return false; -      return true; -    case WRITE_INTEGRATED_NO: -      return false; -    case WRITE_INTEGRATED_YES: -      return true; -    } -  return true; +	struct stat s; + +	switch (vtysh_write_integrated) { +	case WRITE_INTEGRATED_UNSPECIFIED: +		if (stat(quagga_config, &s) && errno == ENOENT) +			return false; +		return true; +	case WRITE_INTEGRATED_NO: +		return false; +	case WRITE_INTEGRATED_YES: +		return true; +	} +	return true;  }  DEFUN (vtysh_write_memory, @@ -2582,38 +2158,38 @@ DEFUN (vtysh_write_memory,         "Write configuration to the file (same as write file)\n"         "Write configuration to the file (same as write memory)\n")  { -  int ret = CMD_SUCCESS; -  char line[] = "write memory\n"; -  u_int i; - -  fprintf (stdout, "Note: this version of vtysh never writes vtysh.conf\n"); - -  /* If integrated frr.conf explicitely set. */ -  if (want_config_integrated()) -    { -      ret = CMD_WARNING; -      for (i = 0; i < array_size(vtysh_client); i++) -        if (vtysh_client[i].flag == VTYSH_WATCHFRR) -          break; -      if (i < array_size(vtysh_client) && vtysh_client[i].fd != -1) -        ret = vtysh_client_execute (&vtysh_client[i], "write integrated", stdout); - -      if (ret != CMD_SUCCESS) -        { -          printf("\nWarning: attempting direct configuration write without " -                 "watchfrr.\nFile permissions and ownership may be " -                 "incorrect, or write may fail.\n\n"); -          ret = vtysh_write_config_integrated(); -        } -      return ret; -    } +	int ret = CMD_SUCCESS; +	char line[] = "write memory\n"; +	u_int i; + +	fprintf(stdout, +		"Note: this version of vtysh never writes vtysh.conf\n"); + +	/* If integrated frr.conf explicitely set. */ +	if (want_config_integrated()) { +		ret = CMD_WARNING; +		for (i = 0; i < array_size(vtysh_client); i++) +			if (vtysh_client[i].flag == VTYSH_WATCHFRR) +				break; +		if (i < array_size(vtysh_client) && vtysh_client[i].fd != -1) +			ret = vtysh_client_execute(&vtysh_client[i], +						   "write integrated", stdout); + +		if (ret != CMD_SUCCESS) { +			printf("\nWarning: attempting direct configuration write without " +			       "watchfrr.\nFile permissions and ownership may be " +			       "incorrect, or write may fail.\n\n"); +			ret = vtysh_write_config_integrated(); +		} +		return ret; +	} -  fprintf (stdout,"Building Configuration...\n"); +	fprintf(stdout, "Building Configuration...\n"); -  for (i = 0; i < array_size(vtysh_client); i++) -    ret = vtysh_client_execute (&vtysh_client[i], line, stdout); +	for (i = 0; i < array_size(vtysh_client); i++) +		ret = vtysh_client_execute(&vtysh_client[i], line, stdout); -  return ret; +	return ret;  }  DEFUN (vtysh_copy_running_config, @@ -2623,7 +2199,7 @@ DEFUN (vtysh_copy_running_config,         "Copy from current system configuration\n"         "Copy to startup configuration\n")  { -  return vtysh_write_memory (self, vty, argc, argv); +	return vtysh_write_memory(self, vty, argc, argv);  }  DEFUN (vtysh_terminal_length, @@ -2633,31 +2209,28 @@ DEFUN (vtysh_terminal_length,         "Set number of lines on a screen\n"         "Number of lines on screen (0 for no pausing)\n")  { -  int idx_number = 2; -  int lines; -  char *endptr = NULL; -  char default_pager[10]; +	int idx_number = 2; +	int lines; +	char *endptr = NULL; +	char default_pager[10]; -  lines = strtol (argv[idx_number]->arg, &endptr, 10); -  if (lines < 0 || lines > 512 || *endptr != '\0') -    { -      vty_out (vty, "length is malformed%s", VTY_NEWLINE); -      return CMD_WARNING; -    } +	lines = strtol(argv[idx_number]->arg, &endptr, 10); +	if (lines < 0 || lines > 512 || *endptr != '\0') { +		vty_out(vty, "length is malformed%s", VTY_NEWLINE); +		return CMD_WARNING; +	} -  if (vtysh_pager_name) -    { -      free (vtysh_pager_name); -      vtysh_pager_name = NULL; -    } +	if (vtysh_pager_name) { +		free(vtysh_pager_name); +		vtysh_pager_name = NULL; +	} -  if (lines != 0) -    { -      snprintf(default_pager, 10, "more -%i", lines); -      vtysh_pager_name = strdup (default_pager); -    } +	if (lines != 0) { +		snprintf(default_pager, 10, "more -%i", lines); +		vtysh_pager_name = strdup(default_pager); +	} -  return CMD_SUCCESS; +	return CMD_SUCCESS;  }  DEFUN (vtysh_terminal_no_length, @@ -2667,14 +2240,13 @@ DEFUN (vtysh_terminal_no_length,         NO_STR         "Set number of lines on a screen\n")  { -  if (vtysh_pager_name) -    { -      free (vtysh_pager_name); -      vtysh_pager_name = NULL; -    } +	if (vtysh_pager_name) { +		free(vtysh_pager_name); +		vtysh_pager_name = NULL; +	} -  vtysh_pager_init(); -  return CMD_SUCCESS; +	vtysh_pager_init(); +	return CMD_SUCCESS;  }  DEFUN (vtysh_show_daemons, @@ -2683,60 +2255,55 @@ DEFUN (vtysh_show_daemons,         SHOW_STR         "Show list of running daemons\n")  { -  u_int i; +	u_int i; -  for (i = 0; i < array_size(vtysh_client); i++) -    if ( vtysh_client[i].fd >= 0 ) -      vty_out(vty, " %s", vtysh_client[i].name); -  vty_out(vty, "%s", VTY_NEWLINE); +	for (i = 0; i < array_size(vtysh_client); i++) +		if (vtysh_client[i].fd >= 0) +			vty_out(vty, " %s", vtysh_client[i].name); +	vty_out(vty, "%s", VTY_NEWLINE); -  return CMD_SUCCESS; +	return CMD_SUCCESS;  }  /* Execute command in child process. */ -static void -execute_command (const char *command, int argc, struct cmd_token *arg1, -		 const char *arg2) -{ -  pid_t pid; -  int status; - -  /* Call fork(). */ -  pid = fork (); - -  if (pid < 0) -    { -      /* Failure of fork(). */ -      fprintf (stderr, "Can't fork: %s\n", safe_strerror (errno)); -      exit (1); -    } -  else if (pid == 0) -    { -      /* This is child process. */ -      switch (argc) -	{ -	case 0: -	  execlp (command, command, (const char *)NULL); -	  break; -	case 1: -	  execlp (command, command, arg1, (const char *)NULL); -	  break; -	case 2: -	  execlp (command, command, arg1, arg2, (const char *)NULL); -	  break; -	} +static void execute_command(const char *command, int argc, +			    struct cmd_token *arg1, const char *arg2) +{ +	pid_t pid; +	int status; + +	/* Call fork(). */ +	pid = fork(); + +	if (pid < 0) { +		/* Failure of fork(). */ +		fprintf(stderr, "Can't fork: %s\n", safe_strerror(errno)); +		exit(1); +	} else if (pid == 0) { +		/* This is child process. */ +		switch (argc) { +		case 0: +			execlp(command, command, (const char *)NULL); +			break; +		case 1: +			execlp(command, command, arg1, (const char *)NULL); +			break; +		case 2: +			execlp(command, command, arg1, arg2, +			       (const char *)NULL); +			break; +		} -      /* When execlp suceed, this part is not executed. */ -      fprintf (stderr, "Can't execute %s: %s\n", command, safe_strerror (errno)); -      exit (1); -    } -  else -    { -      /* This is parent. */ -      execute_flag = 1; -      wait4 (pid, &status, 0, NULL); -      execute_flag = 0; -    } +		/* When execlp suceed, this part is not executed. */ +		fprintf(stderr, "Can't execute %s: %s\n", command, +			safe_strerror(errno)); +		exit(1); +	} else { +		/* This is parent. */ +		execute_flag = 1; +		wait4(pid, &status, 0, NULL); +		execute_flag = 0; +	}  }  DEFUN (vtysh_ping, @@ -2745,16 +2312,14 @@ DEFUN (vtysh_ping,         "Send echo messages\n"         "Ping destination address or hostname\n")  { -  execute_command ("ping", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("ping", 1, argv[0], NULL); +	return CMD_SUCCESS;  } -ALIAS (vtysh_ping, -       vtysh_ping_ip_cmd, -       "ping ip WORD", -       "Send echo messages\n" -       "IP echo\n" -       "Ping destination address or hostname\n") +ALIAS(vtysh_ping, vtysh_ping_ip_cmd, "ping ip WORD", +      "Send echo messages\n" +      "IP echo\n" +      "Ping destination address or hostname\n")  DEFUN (vtysh_traceroute,         vtysh_traceroute_cmd, @@ -2762,16 +2327,14 @@ DEFUN (vtysh_traceroute,         "Trace route to destination\n"         "Trace route to destination address or hostname\n")  { -  execute_command ("traceroute", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("traceroute", 1, argv[0], NULL); +	return CMD_SUCCESS;  } -ALIAS (vtysh_traceroute, -       vtysh_traceroute_ip_cmd, -       "traceroute ip WORD", -       "Trace route to destination\n" -       "IP trace\n" -       "Trace route to destination address or hostname\n") +ALIAS(vtysh_traceroute, vtysh_traceroute_ip_cmd, "traceroute ip WORD", +      "Trace route to destination\n" +      "IP trace\n" +      "Trace route to destination address or hostname\n")  DEFUN (vtysh_ping6,         vtysh_ping6_cmd, @@ -2780,8 +2343,8 @@ DEFUN (vtysh_ping6,         "IPv6 echo\n"         "Ping destination address or hostname\n")  { -  execute_command ("ping6", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("ping6", 1, argv[0], NULL); +	return CMD_SUCCESS;  }  DEFUN (vtysh_traceroute6, @@ -2791,8 +2354,8 @@ DEFUN (vtysh_traceroute6,         "IPv6 trace\n"         "Trace route to destination address or hostname\n")  { -  execute_command ("traceroute6", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("traceroute6", 1, argv[0], NULL); +	return CMD_SUCCESS;  }  #if defined(HAVE_SHELL_ACCESS) @@ -2802,8 +2365,8 @@ DEFUN (vtysh_telnet,         "Open a telnet connection\n"         "IP address or hostname of a remote system\n")  { -  execute_command ("telnet", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("telnet", 1, argv[0], NULL); +	return CMD_SUCCESS;  }  DEFUN (vtysh_telnet_port, @@ -2813,8 +2376,8 @@ DEFUN (vtysh_telnet_port,         "IP address or hostname of a remote system\n"         "TCP Port number\n")  { -  execute_command ("telnet", 2, argv[0], argv[1]); -  return CMD_SUCCESS; +	execute_command("telnet", 2, argv[0], argv[1]); +	return CMD_SUCCESS;  }  DEFUN (vtysh_ssh, @@ -2823,8 +2386,8 @@ DEFUN (vtysh_ssh,         "Open an ssh connection\n"         "[user@]host\n")  { -  execute_command ("ssh", 1, argv[0], NULL); -  return CMD_SUCCESS; +	execute_command("ssh", 1, argv[0], NULL); +	return CMD_SUCCESS;  }  DEFUN (vtysh_start_shell, @@ -2832,8 +2395,8 @@ DEFUN (vtysh_start_shell,         "start-shell",         "Start UNIX shell\n")  { -  execute_command ("sh", 0, NULL, NULL); -  return CMD_SUCCESS; +	execute_command("sh", 0, NULL, NULL); +	return CMD_SUCCESS;  }  DEFUN (vtysh_start_bash, @@ -2842,8 +2405,8 @@ DEFUN (vtysh_start_bash,         "Start UNIX shell\n"         "Start bash\n")  { -  execute_command ("bash", 0, NULL, NULL); -  return CMD_SUCCESS; +	execute_command("bash", 0, NULL, NULL); +	return CMD_SUCCESS;  }  DEFUN (vtysh_start_zsh, @@ -2852,8 +2415,8 @@ DEFUN (vtysh_start_zsh,         "Start UNIX shell\n"         "Start Z shell\n")  { -  execute_command ("zsh", 0, NULL, NULL); -  return CMD_SUCCESS; +	execute_command("zsh", 0, NULL, NULL); +	return CMD_SUCCESS;  }  #endif @@ -2863,575 +2426,556 @@ DEFUN (config_list,         "Print command list\n"         "Print all possible command permutations\n")  { -  return cmd_list_cmds (vty, argc == 2); +	return cmd_list_cmds(vty, argc == 2);  } -static void -vtysh_install_default (enum node_type node) +static void vtysh_install_default(enum node_type node)  { -  install_element (node, &config_list_cmd); +	install_element(node, &config_list_cmd);  }  /* Making connection to protocol daemon. */ -static int -vtysh_connect (struct vtysh_client *vclient) -{ -  int ret; -  int sock, len; -  struct sockaddr_un addr; -  struct stat s_stat; -  const char *path; - -  if (!vclient->path[0]) -    snprintf(vclient->path, sizeof(vclient->path), "%s/%s.vty", -                    vty_sock_path, vclient->name); -  path = vclient->path; - -  /* Stat socket to see if we have permission to access it. */ -  ret = stat (path, &s_stat); -  if (ret < 0 && errno != ENOENT) -    { -      fprintf  (stderr, "vtysh_connect(%s): stat = %s\n",  -                path, safe_strerror(errno)); -      exit(1); -    } -   -  if (ret >= 0) -    { -      if (! S_ISSOCK(s_stat.st_mode)) -	{ -	  fprintf (stderr, "vtysh_connect(%s): Not a socket\n", -	           path); -	  exit (1); +static int vtysh_connect(struct vtysh_client *vclient) +{ +	int ret; +	int sock, len; +	struct sockaddr_un addr; +	struct stat s_stat; +	const char *path; + +	if (!vclient->path[0]) +		snprintf(vclient->path, sizeof(vclient->path), "%s/%s.vty", +			 vty_sock_path, vclient->name); +	path = vclient->path; + +	/* Stat socket to see if we have permission to access it. */ +	ret = stat(path, &s_stat); +	if (ret < 0 && errno != ENOENT) { +		fprintf(stderr, "vtysh_connect(%s): stat = %s\n", path, +			safe_strerror(errno)); +		exit(1);  	} -       -    } -  sock = socket (AF_UNIX, SOCK_STREAM, 0); -  if (sock < 0) -    { +	if (ret >= 0) { +		if (!S_ISSOCK(s_stat.st_mode)) { +			fprintf(stderr, "vtysh_connect(%s): Not a socket\n", +				path); +			exit(1); +		} +	} + +	sock = socket(AF_UNIX, SOCK_STREAM, 0); +	if (sock < 0) {  #ifdef DEBUG -      fprintf(stderr, "vtysh_connect(%s): socket = %s\n", path, -	      safe_strerror(errno)); +		fprintf(stderr, "vtysh_connect(%s): socket = %s\n", path, +			safe_strerror(errno));  #endif /* DEBUG */ -      return -1; -    } +		return -1; +	} -  memset (&addr, 0, sizeof (struct sockaddr_un)); -  addr.sun_family = AF_UNIX; -  strlcpy (addr.sun_path, path, sizeof (addr.sun_path)); +	memset(&addr, 0, sizeof(struct sockaddr_un)); +	addr.sun_family = AF_UNIX; +	strlcpy(addr.sun_path, path, sizeof(addr.sun_path));  #ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN -  len = addr.sun_len = SUN_LEN(&addr); +	len = addr.sun_len = SUN_LEN(&addr);  #else -  len = sizeof (addr.sun_family) + strlen (addr.sun_path); +	len = sizeof(addr.sun_family) + strlen(addr.sun_path);  #endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ -  ret = connect (sock, (struct sockaddr *) &addr, len); -  if (ret < 0) -    { +	ret = connect(sock, (struct sockaddr *)&addr, len); +	if (ret < 0) {  #ifdef DEBUG -      fprintf(stderr, "vtysh_connect(%s): connect = %s\n", path, -	      safe_strerror(errno)); +		fprintf(stderr, "vtysh_connect(%s): connect = %s\n", path, +			safe_strerror(errno));  #endif /* DEBUG */ -      close (sock); -      return -1; -    } -  vclient->fd = sock; +		close(sock); +		return -1; +	} +	vclient->fd = sock; -  return 0; +	return 0;  }  /* Return true if str ends with suffix, else return false */ -static int -ends_with(const char *str, const char *suffix) +static int ends_with(const char *str, const char *suffix)  { -  if (!str || !suffix) -    return 0; -  size_t lenstr = strlen(str); -  size_t lensuffix = strlen(suffix); -  if (lensuffix >  lenstr) -    return 0; -  return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0; +	if (!str || !suffix) +		return 0; +	size_t lenstr = strlen(str); +	size_t lensuffix = strlen(suffix); +	if (lensuffix > lenstr) +		return 0; +	return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;  } -static void -vtysh_client_sorted_insert (struct vtysh_client *head_client, -                            struct vtysh_client *client) +static void vtysh_client_sorted_insert(struct vtysh_client *head_client, +				       struct vtysh_client *client)  { -  struct vtysh_client *prev_node, *current_node; +	struct vtysh_client *prev_node, *current_node; -  prev_node = head_client; -  current_node = head_client->next; -  while (current_node) -    { -      if (strcmp(current_node->path, client->path) > 0) -        break; +	prev_node = head_client; +	current_node = head_client->next; +	while (current_node) { +		if (strcmp(current_node->path, client->path) > 0) +			break; -      prev_node = current_node; -      current_node = current_node->next; -    } -  client->next = current_node; -  prev_node->next = client; +		prev_node = current_node; +		current_node = current_node->next; +	} +	client->next = current_node; +	prev_node->next = client;  }  #define MAXIMUM_INSTANCES 10 -static void -vtysh_update_all_insances(struct vtysh_client * head_client) -{ -  struct vtysh_client *client; -  DIR *dir; -  struct dirent *file; -  int n = 0; - -  if (head_client->flag != VTYSH_OSPFD) return; - -  /* ls vty_sock_dir and look for all files ending in .vty */ -  dir = opendir(vty_sock_path); -  if (dir) -    { -      while ((file = readdir(dir)) != NULL) -        { -          if (begins_with(file->d_name, "ospfd-") && ends_with(file->d_name, ".vty")) -            { -              if (n == MAXIMUM_INSTANCES) -                { -                  fprintf(stderr, -                          "Parsing %s, client limit(%d) reached!\n", -                          vty_sock_path, n); -                  break; -                } -              client = (struct vtysh_client *) malloc(sizeof(struct vtysh_client)); -              client->fd = -1; -	      client->name = "ospfd"; -              client->flag = VTYSH_OSPFD; -              snprintf(client->path, sizeof(client->path), "%s/%s", -                              vty_sock_path, file->d_name); -              client->next = NULL; -              vtysh_client_sorted_insert(head_client, client); -              n++; -            } -        } -      closedir(dir); -    } -} - -static int -vtysh_connect_all_instances (struct vtysh_client *head_client) -{ -  struct vtysh_client *client; -  int rc = 0; - -  vtysh_update_all_insances(head_client); - -  client = head_client->next; -  while (client) -    { -      if (vtysh_connect(client) == 0) -        rc++; -      client = client->next; -    } - -  return rc; -} - -int -vtysh_connect_all(const char *daemon_name) -{ -  u_int i; -  int rc = 0; -  int matches = 0; - -  for (i = 0; i < array_size(vtysh_client); i++) -    { -      if (!daemon_name || !strcmp(daemon_name, vtysh_client[i].name)) -	{ -	  matches++; -	  if (vtysh_connect(&vtysh_client[i]) == 0) -	    rc++; - -          rc += vtysh_connect_all_instances(&vtysh_client[i]); -       } -    } -  if (!matches) -    fprintf(stderr, "Error: no daemons match name %s!\n", daemon_name); -  return rc; +static void vtysh_update_all_insances(struct vtysh_client *head_client) +{ +	struct vtysh_client *client; +	DIR *dir; +	struct dirent *file; +	int n = 0; + +	if (head_client->flag != VTYSH_OSPFD) +		return; + +	/* ls vty_sock_dir and look for all files ending in .vty */ +	dir = opendir(vty_sock_path); +	if (dir) { +		while ((file = readdir(dir)) != NULL) { +			if (begins_with(file->d_name, "ospfd-") +			    && ends_with(file->d_name, ".vty")) { +				if (n == MAXIMUM_INSTANCES) { +					fprintf(stderr, +						"Parsing %s, client limit(%d) reached!\n", +						vty_sock_path, n); +					break; +				} +				client = (struct vtysh_client *)malloc( +					sizeof(struct vtysh_client)); +				client->fd = -1; +				client->name = "ospfd"; +				client->flag = VTYSH_OSPFD; +				snprintf(client->path, sizeof(client->path), +					 "%s/%s", vty_sock_path, file->d_name); +				client->next = NULL; +				vtysh_client_sorted_insert(head_client, client); +				n++; +			} +		} +		closedir(dir); +	} +} + +static int vtysh_connect_all_instances(struct vtysh_client *head_client) +{ +	struct vtysh_client *client; +	int rc = 0; + +	vtysh_update_all_insances(head_client); + +	client = head_client->next; +	while (client) { +		if (vtysh_connect(client) == 0) +			rc++; +		client = client->next; +	} + +	return rc; +} + +int vtysh_connect_all(const char *daemon_name) +{ +	u_int i; +	int rc = 0; +	int matches = 0; + +	for (i = 0; i < array_size(vtysh_client); i++) { +		if (!daemon_name +		    || !strcmp(daemon_name, vtysh_client[i].name)) { +			matches++; +			if (vtysh_connect(&vtysh_client[i]) == 0) +				rc++; + +			rc += vtysh_connect_all_instances(&vtysh_client[i]); +		} +	} +	if (!matches) +		fprintf(stderr, "Error: no daemons match name %s!\n", +			daemon_name); +	return rc;  }  /* To disable readline's filename completion. */ -static char * -vtysh_completion_entry_function (const char *ignore, int invoking_key) -{ -  return NULL; -} - -void -vtysh_readline_init (void) -{ -  /* readline related settings. */ -  rl_initialize (); -  rl_bind_key ('?', (rl_command_func_t *) vtysh_rl_describe); -  rl_completion_entry_function = vtysh_completion_entry_function; -  rl_attempted_completion_function = (rl_completion_func_t *)new_completion; -} - -char * -vtysh_prompt (void) -{ -  static struct utsname names; -  static char buf[100]; -  const char*hostname; -  extern struct host host; - -  hostname = host.name; - -  if (!hostname) -    { -      if (!names.nodename[0]) -	uname (&names); -      hostname = names.nodename; -    } - -  snprintf (buf, sizeof buf, cmd_prompt (vty->node), hostname); - -  return buf; -} - -void -vtysh_init_vty (void) -{ -  /* Make vty structure. */ -  vty = vty_new (); -  vty->type = VTY_SHELL; -  vty->node = VIEW_NODE; - -  /* Initialize commands. */ -  cmd_init (0); - -  /* Install nodes. */ -  install_node (&bgp_node, NULL); -  install_node (&rip_node, NULL); -  install_node (&interface_node, NULL); -  install_node (&pw_node, NULL); -  install_node (&link_params_node, NULL); -  install_node (&ns_node, NULL); -  install_node (&vrf_node, NULL); -  install_node (&rmap_node, NULL); -  install_node (&zebra_node, NULL); -  install_node (&bgp_vpnv4_node, NULL); -  install_node (&bgp_vpnv6_node, NULL); -  install_node (&bgp_ipv4_node, NULL); -  install_node (&bgp_ipv4m_node, NULL); -  install_node (&bgp_ipv6_node, NULL); -  install_node (&bgp_ipv6m_node, NULL); -  install_node (&bgp_vrf_policy_node, NULL); -  install_node (&bgp_evpn_node, NULL); -  install_node (&bgp_vnc_defaults_node, NULL); -  install_node (&bgp_vnc_nve_group_node, NULL); -  install_node (&bgp_vnc_l2_group_node, NULL); -  install_node (&ospf_node, NULL); -  install_node (&ripng_node, NULL); -  install_node (&ospf6_node, NULL); -  install_node (&ldp_node, NULL); -  install_node (&ldp_ipv4_node, NULL); -  install_node (&ldp_ipv6_node, NULL); -  install_node (&ldp_ipv4_iface_node, NULL); -  install_node (&ldp_ipv6_iface_node, NULL); -  install_node (&ldp_l2vpn_node, NULL); -  install_node (&ldp_pseudowire_node, NULL); -  install_node (&keychain_node, NULL); -  install_node (&keychain_key_node, NULL); -  install_node (&isis_node, NULL); -  install_node (&vty_node, NULL); - -  vtysh_install_default (VIEW_NODE); -  vtysh_install_default (CONFIG_NODE); -  vtysh_install_default (BGP_NODE); -  vtysh_install_default (RIP_NODE); -  vtysh_install_default (INTERFACE_NODE); -  vtysh_install_default (PW_NODE); -  vtysh_install_default (LINK_PARAMS_NODE); -  vtysh_install_default (NS_NODE); -  vtysh_install_default (VRF_NODE); -  vtysh_install_default (RMAP_NODE); -  vtysh_install_default (ZEBRA_NODE); -  vtysh_install_default (BGP_VPNV4_NODE); -  vtysh_install_default (BGP_VPNV6_NODE); -  vtysh_install_default (BGP_IPV4_NODE); -  vtysh_install_default (BGP_IPV4M_NODE); -  vtysh_install_default (BGP_IPV6_NODE); -  vtysh_install_default (BGP_IPV6M_NODE); -  vtysh_install_default (BGP_EVPN_NODE); +static char *vtysh_completion_entry_function(const char *ignore, +					     int invoking_key) +{ +	return NULL; +} + +void vtysh_readline_init(void) +{ +	/* readline related settings. */ +	rl_initialize(); +	rl_bind_key('?', (rl_command_func_t *)vtysh_rl_describe); +	rl_completion_entry_function = vtysh_completion_entry_function; +	rl_attempted_completion_function = +		(rl_completion_func_t *)new_completion; +} + +char *vtysh_prompt(void) +{ +	static struct utsname names; +	static char buf[100]; +	const char *hostname; +	extern struct host host; + +	hostname = host.name; + +	if (!hostname) { +		if (!names.nodename[0]) +			uname(&names); +		hostname = names.nodename; +	} + +	snprintf(buf, sizeof buf, cmd_prompt(vty->node), hostname); + +	return buf; +} + +void vtysh_init_vty(void) +{ +	/* Make vty structure. */ +	vty = vty_new(); +	vty->type = VTY_SHELL; +	vty->node = VIEW_NODE; + +	/* Initialize commands. */ +	cmd_init(0); + +	/* Install nodes. */ +	install_node(&bgp_node, NULL); +	install_node(&rip_node, NULL); +	install_node(&interface_node, NULL); +	install_node(&pw_node, NULL); +	install_node(&link_params_node, NULL); +	install_node(&ns_node, NULL); +	install_node(&vrf_node, NULL); +	install_node(&rmap_node, NULL); +	install_node(&zebra_node, NULL); +	install_node(&bgp_vpnv4_node, NULL); +	install_node(&bgp_vpnv6_node, NULL); +	install_node(&bgp_ipv4_node, NULL); +	install_node(&bgp_ipv4m_node, NULL); +	install_node(&bgp_ipv6_node, NULL); +	install_node(&bgp_ipv6m_node, NULL); +	install_node(&bgp_vrf_policy_node, NULL); +	install_node(&bgp_evpn_node, NULL); +	install_node(&bgp_vnc_defaults_node, NULL); +	install_node(&bgp_vnc_nve_group_node, NULL); +	install_node(&bgp_vnc_l2_group_node, NULL); +	install_node(&ospf_node, NULL); +	install_node(&ripng_node, NULL); +	install_node(&ospf6_node, NULL); +	install_node(&ldp_node, NULL); +	install_node(&ldp_ipv4_node, NULL); +	install_node(&ldp_ipv6_node, NULL); +	install_node(&ldp_ipv4_iface_node, NULL); +	install_node(&ldp_ipv6_iface_node, NULL); +	install_node(&ldp_l2vpn_node, NULL); +	install_node(&ldp_pseudowire_node, NULL); +	install_node(&keychain_node, NULL); +	install_node(&keychain_key_node, NULL); +	install_node(&isis_node, NULL); +	install_node(&vty_node, NULL); + +	vtysh_install_default(VIEW_NODE); +	vtysh_install_default(CONFIG_NODE); +	vtysh_install_default(BGP_NODE); +	vtysh_install_default(RIP_NODE); +	vtysh_install_default(INTERFACE_NODE); +	vtysh_install_default(PW_NODE); +	vtysh_install_default(LINK_PARAMS_NODE); +	vtysh_install_default(NS_NODE); +	vtysh_install_default(VRF_NODE); +	vtysh_install_default(RMAP_NODE); +	vtysh_install_default(ZEBRA_NODE); +	vtysh_install_default(BGP_VPNV4_NODE); +	vtysh_install_default(BGP_VPNV6_NODE); +	vtysh_install_default(BGP_IPV4_NODE); +	vtysh_install_default(BGP_IPV4M_NODE); +	vtysh_install_default(BGP_IPV6_NODE); +	vtysh_install_default(BGP_IPV6M_NODE); +	vtysh_install_default(BGP_EVPN_NODE);  #if ENABLE_BGP_VNC -  vtysh_install_default (BGP_VRF_POLICY_NODE); -  vtysh_install_default (BGP_VNC_DEFAULTS_NODE); -  vtysh_install_default (BGP_VNC_NVE_GROUP_NODE); -  vtysh_install_default (BGP_VNC_L2_GROUP_NODE); +	vtysh_install_default(BGP_VRF_POLICY_NODE); +	vtysh_install_default(BGP_VNC_DEFAULTS_NODE); +	vtysh_install_default(BGP_VNC_NVE_GROUP_NODE); +	vtysh_install_default(BGP_VNC_L2_GROUP_NODE);  #endif -  vtysh_install_default (OSPF_NODE); -  vtysh_install_default (RIPNG_NODE); -  vtysh_install_default (OSPF6_NODE); -  vtysh_install_default (LDP_NODE); -  vtysh_install_default (LDP_IPV4_NODE); -  vtysh_install_default (LDP_IPV6_NODE); -  vtysh_install_default (LDP_IPV4_IFACE_NODE); -  vtysh_install_default (LDP_IPV6_IFACE_NODE); -  vtysh_install_default (LDP_L2VPN_NODE); -  vtysh_install_default (LDP_PSEUDOWIRE_NODE); -  vtysh_install_default (ISIS_NODE); -  vtysh_install_default (KEYCHAIN_NODE); -  vtysh_install_default (KEYCHAIN_KEY_NODE); -  vtysh_install_default (VTY_NODE); - -  install_element (VIEW_NODE, &vtysh_enable_cmd); -  install_element (ENABLE_NODE, &vtysh_config_terminal_cmd); -  install_element (ENABLE_NODE, &vtysh_disable_cmd); - -  /* "exit" command. */ -  install_element (VIEW_NODE, &vtysh_exit_all_cmd); -  install_element (CONFIG_NODE, &vtysh_exit_all_cmd); -  install_element (VIEW_NODE, &vtysh_quit_all_cmd); -  install_element (CONFIG_NODE, &vtysh_quit_all_cmd); -  install_element (RIP_NODE, &vtysh_exit_ripd_cmd); -  install_element (RIP_NODE, &vtysh_quit_ripd_cmd); -  install_element (RIPNG_NODE, &vtysh_exit_ripngd_cmd); -  install_element (RIPNG_NODE, &vtysh_quit_ripngd_cmd); -  install_element (OSPF_NODE, &vtysh_exit_ospfd_cmd); -  install_element (OSPF_NODE, &vtysh_quit_ospfd_cmd); -  install_element (OSPF6_NODE, &vtysh_exit_ospf6d_cmd); -  install_element (OSPF6_NODE, &vtysh_quit_ospf6d_cmd); -#if defined (HAVE_LDPD) -  install_element (LDP_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_IPV4_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_IPV4_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_IPV6_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_IPV6_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_IPV4_IFACE_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_IPV4_IFACE_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_IPV6_IFACE_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_IPV6_IFACE_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_L2VPN_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_L2VPN_NODE, &vtysh_quit_ldpd_cmd); -  install_element (LDP_PSEUDOWIRE_NODE, &vtysh_exit_ldpd_cmd); -  install_element (LDP_PSEUDOWIRE_NODE, &vtysh_quit_ldpd_cmd); +	vtysh_install_default(OSPF_NODE); +	vtysh_install_default(RIPNG_NODE); +	vtysh_install_default(OSPF6_NODE); +	vtysh_install_default(LDP_NODE); +	vtysh_install_default(LDP_IPV4_NODE); +	vtysh_install_default(LDP_IPV6_NODE); +	vtysh_install_default(LDP_IPV4_IFACE_NODE); +	vtysh_install_default(LDP_IPV6_IFACE_NODE); +	vtysh_install_default(LDP_L2VPN_NODE); +	vtysh_install_default(LDP_PSEUDOWIRE_NODE); +	vtysh_install_default(ISIS_NODE); +	vtysh_install_default(KEYCHAIN_NODE); +	vtysh_install_default(KEYCHAIN_KEY_NODE); +	vtysh_install_default(VTY_NODE); + +	install_element(VIEW_NODE, &vtysh_enable_cmd); +	install_element(ENABLE_NODE, &vtysh_config_terminal_cmd); +	install_element(ENABLE_NODE, &vtysh_disable_cmd); + +	/* "exit" command. */ +	install_element(VIEW_NODE, &vtysh_exit_all_cmd); +	install_element(CONFIG_NODE, &vtysh_exit_all_cmd); +	install_element(VIEW_NODE, &vtysh_quit_all_cmd); +	install_element(CONFIG_NODE, &vtysh_quit_all_cmd); +	install_element(RIP_NODE, &vtysh_exit_ripd_cmd); +	install_element(RIP_NODE, &vtysh_quit_ripd_cmd); +	install_element(RIPNG_NODE, &vtysh_exit_ripngd_cmd); +	install_element(RIPNG_NODE, &vtysh_quit_ripngd_cmd); +	install_element(OSPF_NODE, &vtysh_exit_ospfd_cmd); +	install_element(OSPF_NODE, &vtysh_quit_ospfd_cmd); +	install_element(OSPF6_NODE, &vtysh_exit_ospf6d_cmd); +	install_element(OSPF6_NODE, &vtysh_quit_ospf6d_cmd); +#if defined(HAVE_LDPD) +	install_element(LDP_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_IPV4_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_IPV4_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_IPV6_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_IPV6_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_IPV4_IFACE_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_IPV4_IFACE_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_IPV6_IFACE_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_IPV6_IFACE_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_L2VPN_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_L2VPN_NODE, &vtysh_quit_ldpd_cmd); +	install_element(LDP_PSEUDOWIRE_NODE, &vtysh_exit_ldpd_cmd); +	install_element(LDP_PSEUDOWIRE_NODE, &vtysh_quit_ldpd_cmd);  #endif -  install_element (BGP_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_VPNV4_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VPNV4_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_VPNV6_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VPNV6_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_IPV4_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_IPV4_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_IPV4M_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_IPV4M_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_IPV6_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_IPV6_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_IPV6M_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_IPV6M_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_EVPN_NODE, &vtysh_quit_bgpd_cmd); -#if defined (ENABLE_BGP_VNC) -  install_element (BGP_VRF_POLICY_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VRF_POLICY_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_VNC_DEFAULTS_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VNC_DEFAULTS_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_VNC_NVE_GROUP_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VNC_NVE_GROUP_NODE, &vtysh_quit_bgpd_cmd); -  install_element (BGP_VNC_L2_GROUP_NODE, &vtysh_exit_bgpd_cmd); -  install_element (BGP_VNC_L2_GROUP_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_VPNV4_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VPNV4_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_VPNV6_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VPNV6_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_IPV4_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_IPV4_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_IPV4M_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_IPV4M_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_IPV6_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_IPV6_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_IPV6M_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_IPV6M_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_EVPN_NODE, &vtysh_quit_bgpd_cmd); +#if defined(ENABLE_BGP_VNC) +	install_element(BGP_VRF_POLICY_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VRF_POLICY_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_VNC_DEFAULTS_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VNC_DEFAULTS_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_VNC_NVE_GROUP_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VNC_NVE_GROUP_NODE, &vtysh_quit_bgpd_cmd); +	install_element(BGP_VNC_L2_GROUP_NODE, &vtysh_exit_bgpd_cmd); +	install_element(BGP_VNC_L2_GROUP_NODE, &vtysh_quit_bgpd_cmd);  #endif -  install_element (ISIS_NODE, &vtysh_exit_isisd_cmd); -  install_element (ISIS_NODE, &vtysh_quit_isisd_cmd); -  install_element (KEYCHAIN_NODE, &vtysh_exit_ripd_cmd); -  install_element (KEYCHAIN_NODE, &vtysh_quit_ripd_cmd); -  install_element (KEYCHAIN_KEY_NODE, &vtysh_exit_ripd_cmd); -  install_element (KEYCHAIN_KEY_NODE, &vtysh_quit_ripd_cmd); -  install_element (RMAP_NODE, &vtysh_exit_rmap_cmd); -  install_element (RMAP_NODE, &vtysh_quit_rmap_cmd); -  install_element (VTY_NODE, &vtysh_exit_line_vty_cmd); -  install_element (VTY_NODE, &vtysh_quit_line_vty_cmd); - -  /* "end" command. */ -  install_element (CONFIG_NODE, &vtysh_end_all_cmd); -  install_element (ENABLE_NODE, &vtysh_end_all_cmd); -  install_element (RIP_NODE, &vtysh_end_all_cmd); -  install_element (RIPNG_NODE, &vtysh_end_all_cmd); -  install_element (OSPF_NODE, &vtysh_end_all_cmd); -  install_element (OSPF6_NODE, &vtysh_end_all_cmd); -  install_element (LDP_NODE, &vtysh_end_all_cmd); -  install_element (LDP_IPV4_NODE, &vtysh_end_all_cmd); -  install_element (LDP_IPV6_NODE, &vtysh_end_all_cmd); -  install_element (LDP_IPV4_IFACE_NODE, &vtysh_end_all_cmd); -  install_element (LDP_IPV6_IFACE_NODE, &vtysh_end_all_cmd); -  install_element (LDP_L2VPN_NODE, &vtysh_end_all_cmd); -  install_element (LDP_PSEUDOWIRE_NODE, &vtysh_end_all_cmd); -  install_element (BGP_NODE, &vtysh_end_all_cmd); -  install_element (BGP_IPV4_NODE, &vtysh_end_all_cmd); -  install_element (BGP_IPV4M_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VPNV4_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VPNV6_NODE, &vtysh_end_all_cmd); -  install_element (BGP_IPV6_NODE, &vtysh_end_all_cmd); -  install_element (BGP_IPV6M_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VRF_POLICY_NODE, &vtysh_end_all_cmd); -  install_element (BGP_EVPN_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VNC_DEFAULTS_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VNC_NVE_GROUP_NODE, &vtysh_end_all_cmd); -  install_element (BGP_VNC_L2_GROUP_NODE, &vtysh_end_all_cmd); -  install_element (ISIS_NODE, &vtysh_end_all_cmd); -  install_element (KEYCHAIN_NODE, &vtysh_end_all_cmd); -  install_element (KEYCHAIN_KEY_NODE, &vtysh_end_all_cmd); -  install_element (RMAP_NODE, &vtysh_end_all_cmd); -  install_element (VTY_NODE, &vtysh_end_all_cmd); - -  install_element (INTERFACE_NODE, &vtysh_interface_desc_cmd); -  install_element (INTERFACE_NODE, &vtysh_no_interface_desc_cmd); -  install_element (INTERFACE_NODE, &vtysh_end_all_cmd); -  install_element (INTERFACE_NODE, &vtysh_exit_interface_cmd); -  install_element (LINK_PARAMS_NODE, &exit_link_params_cmd); -  install_element (LINK_PARAMS_NODE, &vtysh_end_all_cmd); -  install_element (LINK_PARAMS_NODE, &vtysh_exit_interface_cmd); -  install_element (INTERFACE_NODE, &vtysh_quit_interface_cmd); - -  install_element (PW_NODE, &vtysh_end_all_cmd); -  install_element (PW_NODE, &vtysh_exit_interface_cmd); -  install_element (PW_NODE, &vtysh_quit_interface_cmd); - -  install_element (NS_NODE, &vtysh_end_all_cmd); - -  install_element (CONFIG_NODE, &vtysh_ns_cmd); -  install_element (NS_NODE, &vtysh_exit_ns_cmd); -  install_element (NS_NODE, &vtysh_quit_ns_cmd); - -  install_element (VRF_NODE, &vtysh_end_all_cmd); -  install_element (VRF_NODE, &vtysh_exit_vrf_cmd); -  install_element (VRF_NODE, &vtysh_quit_vrf_cmd); - -  install_element (CONFIG_NODE, &router_rip_cmd); -  install_element (CONFIG_NODE, &router_ripng_cmd); -  install_element (CONFIG_NODE, &router_ospf_cmd); -  install_element (CONFIG_NODE, &router_ospf6_cmd); -#if defined (HAVE_LDPD) -  install_element (CONFIG_NODE, &ldp_mpls_ldp_cmd); -  install_element (LDP_NODE, &ldp_address_family_ipv4_cmd); -  install_element (LDP_NODE, &ldp_address_family_ipv6_cmd); -  install_element (LDP_IPV4_NODE, &ldp_interface_ifname_cmd); -  install_element (LDP_IPV6_NODE, &ldp_interface_ifname_cmd); -  install_element (CONFIG_NODE, &ldp_l2vpn_word_type_vpls_cmd); -  install_element (LDP_L2VPN_NODE, &ldp_member_pseudowire_ifname_cmd); +	install_element(ISIS_NODE, &vtysh_exit_isisd_cmd); +	install_element(ISIS_NODE, &vtysh_quit_isisd_cmd); +	install_element(KEYCHAIN_NODE, &vtysh_exit_ripd_cmd); +	install_element(KEYCHAIN_NODE, &vtysh_quit_ripd_cmd); +	install_element(KEYCHAIN_KEY_NODE, &vtysh_exit_ripd_cmd); +	install_element(KEYCHAIN_KEY_NODE, &vtysh_quit_ripd_cmd); +	install_element(RMAP_NODE, &vtysh_exit_rmap_cmd); +	install_element(RMAP_NODE, &vtysh_quit_rmap_cmd); +	install_element(VTY_NODE, &vtysh_exit_line_vty_cmd); +	install_element(VTY_NODE, &vtysh_quit_line_vty_cmd); + +	/* "end" command. */ +	install_element(CONFIG_NODE, &vtysh_end_all_cmd); +	install_element(ENABLE_NODE, &vtysh_end_all_cmd); +	install_element(RIP_NODE, &vtysh_end_all_cmd); +	install_element(RIPNG_NODE, &vtysh_end_all_cmd); +	install_element(OSPF_NODE, &vtysh_end_all_cmd); +	install_element(OSPF6_NODE, &vtysh_end_all_cmd); +	install_element(LDP_NODE, &vtysh_end_all_cmd); +	install_element(LDP_IPV4_NODE, &vtysh_end_all_cmd); +	install_element(LDP_IPV6_NODE, &vtysh_end_all_cmd); +	install_element(LDP_IPV4_IFACE_NODE, &vtysh_end_all_cmd); +	install_element(LDP_IPV6_IFACE_NODE, &vtysh_end_all_cmd); +	install_element(LDP_L2VPN_NODE, &vtysh_end_all_cmd); +	install_element(LDP_PSEUDOWIRE_NODE, &vtysh_end_all_cmd); +	install_element(BGP_NODE, &vtysh_end_all_cmd); +	install_element(BGP_IPV4_NODE, &vtysh_end_all_cmd); +	install_element(BGP_IPV4M_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VPNV4_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VPNV6_NODE, &vtysh_end_all_cmd); +	install_element(BGP_IPV6_NODE, &vtysh_end_all_cmd); +	install_element(BGP_IPV6M_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VRF_POLICY_NODE, &vtysh_end_all_cmd); +	install_element(BGP_EVPN_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VNC_DEFAULTS_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VNC_NVE_GROUP_NODE, &vtysh_end_all_cmd); +	install_element(BGP_VNC_L2_GROUP_NODE, &vtysh_end_all_cmd); +	install_element(ISIS_NODE, &vtysh_end_all_cmd); +	install_element(KEYCHAIN_NODE, &vtysh_end_all_cmd); +	install_element(KEYCHAIN_KEY_NODE, &vtysh_end_all_cmd); +	install_element(RMAP_NODE, &vtysh_end_all_cmd); +	install_element(VTY_NODE, &vtysh_end_all_cmd); + +	install_element(INTERFACE_NODE, &vtysh_interface_desc_cmd); +	install_element(INTERFACE_NODE, &vtysh_no_interface_desc_cmd); +	install_element(INTERFACE_NODE, &vtysh_end_all_cmd); +	install_element(INTERFACE_NODE, &vtysh_exit_interface_cmd); +	install_element(LINK_PARAMS_NODE, &exit_link_params_cmd); +	install_element(LINK_PARAMS_NODE, &vtysh_end_all_cmd); +	install_element(LINK_PARAMS_NODE, &vtysh_exit_interface_cmd); +	install_element(INTERFACE_NODE, &vtysh_quit_interface_cmd); + +	install_element(PW_NODE, &vtysh_end_all_cmd); +	install_element(PW_NODE, &vtysh_exit_interface_cmd); +	install_element(PW_NODE, &vtysh_quit_interface_cmd); + +	install_element(NS_NODE, &vtysh_end_all_cmd); + +	install_element(CONFIG_NODE, &vtysh_ns_cmd); +	install_element(NS_NODE, &vtysh_exit_ns_cmd); +	install_element(NS_NODE, &vtysh_quit_ns_cmd); + +	install_element(VRF_NODE, &vtysh_end_all_cmd); +	install_element(VRF_NODE, &vtysh_exit_vrf_cmd); +	install_element(VRF_NODE, &vtysh_quit_vrf_cmd); + +	install_element(CONFIG_NODE, &router_rip_cmd); +	install_element(CONFIG_NODE, &router_ripng_cmd); +	install_element(CONFIG_NODE, &router_ospf_cmd); +	install_element(CONFIG_NODE, &router_ospf6_cmd); +#if defined(HAVE_LDPD) +	install_element(CONFIG_NODE, &ldp_mpls_ldp_cmd); +	install_element(LDP_NODE, &ldp_address_family_ipv4_cmd); +	install_element(LDP_NODE, &ldp_address_family_ipv6_cmd); +	install_element(LDP_IPV4_NODE, &ldp_interface_ifname_cmd); +	install_element(LDP_IPV6_NODE, &ldp_interface_ifname_cmd); +	install_element(CONFIG_NODE, &ldp_l2vpn_word_type_vpls_cmd); +	install_element(LDP_L2VPN_NODE, &ldp_member_pseudowire_ifname_cmd);  #endif -  install_element (CONFIG_NODE, &router_isis_cmd); -  install_element (CONFIG_NODE, &router_bgp_cmd); -  install_element (BGP_NODE, &address_family_vpnv4_cmd); -  install_element (BGP_NODE, &address_family_vpnv6_cmd); +	install_element(CONFIG_NODE, &router_isis_cmd); +	install_element(CONFIG_NODE, &router_bgp_cmd); +	install_element(BGP_NODE, &address_family_vpnv4_cmd); +	install_element(BGP_NODE, &address_family_vpnv6_cmd);  #if defined(ENABLE_BGP_VNC) -  install_element (BGP_NODE, &vnc_vrf_policy_cmd); -  install_element (BGP_NODE, &vnc_defaults_cmd); -  install_element (BGP_NODE, &vnc_nve_group_cmd); -  install_element (BGP_NODE, &vnc_l2_group_cmd); +	install_element(BGP_NODE, &vnc_vrf_policy_cmd); +	install_element(BGP_NODE, &vnc_defaults_cmd); +	install_element(BGP_NODE, &vnc_nve_group_cmd); +	install_element(BGP_NODE, &vnc_l2_group_cmd);  #endif -  install_element (BGP_NODE, &address_family_ipv4_cmd); -  install_element (BGP_NODE, &address_family_ipv4_multicast_cmd); -  install_element (BGP_NODE, &address_family_ipv4_vpn_cmd); -  install_element (BGP_NODE, &address_family_ipv6_cmd); -  install_element (BGP_NODE, &address_family_ipv6_multicast_cmd); -  install_element (BGP_NODE, &address_family_ipv6_vpn_cmd); -  install_element (BGP_NODE, &address_family_evpn_cmd); -  install_element (BGP_VPNV4_NODE, &exit_address_family_cmd); -  install_element (BGP_VPNV6_NODE, &exit_address_family_cmd); -  install_element (BGP_IPV4_NODE, &exit_address_family_cmd); -  install_element (BGP_IPV4M_NODE, &exit_address_family_cmd); -  install_element (BGP_IPV6_NODE, &exit_address_family_cmd); -  install_element (BGP_IPV6M_NODE, &exit_address_family_cmd); -  install_element (BGP_EVPN_NODE, &exit_address_family_cmd); - -  install_element (BGP_VRF_POLICY_NODE, &exit_vrf_policy_cmd); -  install_element (BGP_VNC_DEFAULTS_NODE, &exit_vnc_config_cmd); -  install_element (BGP_VNC_NVE_GROUP_NODE, &exit_vnc_config_cmd); -  install_element (BGP_VNC_L2_GROUP_NODE, &exit_vnc_config_cmd); - -  install_element (CONFIG_NODE, &key_chain_cmd); -  install_element (CONFIG_NODE, &vtysh_route_map_cmd); -  install_element (CONFIG_NODE, &vtysh_line_vty_cmd); -  install_element (KEYCHAIN_NODE, &key_cmd); -  install_element (KEYCHAIN_NODE, &key_chain_cmd); -  install_element (KEYCHAIN_KEY_NODE, &key_chain_cmd); -  install_element (CONFIG_NODE, &vtysh_interface_cmd); -  install_element (CONFIG_NODE, &vtysh_no_interface_cmd); -  install_element (CONFIG_NODE, &vtysh_no_interface_vrf_cmd); -  install_element (CONFIG_NODE, &vtysh_pseudowire_cmd); -  install_element (INTERFACE_NODE, &vtysh_link_params_cmd); -  install_element (ENABLE_NODE, &vtysh_show_running_config_cmd); -  install_element (ENABLE_NODE, &vtysh_copy_running_config_cmd); - -  install_element (CONFIG_NODE, &vtysh_vrf_cmd); -  install_element (CONFIG_NODE, &vtysh_no_vrf_cmd); - -  /* "write terminal" command. */ -  install_element (ENABLE_NODE, &vtysh_write_terminal_cmd); - -  install_element (CONFIG_NODE, &vtysh_integrated_config_cmd); -  install_element (CONFIG_NODE, &no_vtysh_integrated_config_cmd); - -  /* "write memory" command. */ -  install_element (ENABLE_NODE, &vtysh_write_memory_cmd); - -  install_element (VIEW_NODE, &vtysh_terminal_length_cmd); -  install_element (VIEW_NODE, &vtysh_terminal_no_length_cmd); -  install_element (VIEW_NODE, &vtysh_show_daemons_cmd); - -  install_element (VIEW_NODE, &vtysh_ping_cmd); -  install_element (VIEW_NODE, &vtysh_ping_ip_cmd); -  install_element (VIEW_NODE, &vtysh_traceroute_cmd); -  install_element (VIEW_NODE, &vtysh_traceroute_ip_cmd); -  install_element (VIEW_NODE, &vtysh_ping6_cmd); -  install_element (VIEW_NODE, &vtysh_traceroute6_cmd); +	install_element(BGP_NODE, &address_family_ipv4_cmd); +	install_element(BGP_NODE, &address_family_ipv4_multicast_cmd); +	install_element(BGP_NODE, &address_family_ipv4_vpn_cmd); +	install_element(BGP_NODE, &address_family_ipv6_cmd); +	install_element(BGP_NODE, &address_family_ipv6_multicast_cmd); +	install_element(BGP_NODE, &address_family_ipv6_vpn_cmd); +	install_element(BGP_NODE, &address_family_evpn_cmd); +	install_element(BGP_VPNV4_NODE, &exit_address_family_cmd); +	install_element(BGP_VPNV6_NODE, &exit_address_family_cmd); +	install_element(BGP_IPV4_NODE, &exit_address_family_cmd); +	install_element(BGP_IPV4M_NODE, &exit_address_family_cmd); +	install_element(BGP_IPV6_NODE, &exit_address_family_cmd); +	install_element(BGP_IPV6M_NODE, &exit_address_family_cmd); +	install_element(BGP_EVPN_NODE, &exit_address_family_cmd); + +	install_element(BGP_VRF_POLICY_NODE, &exit_vrf_policy_cmd); +	install_element(BGP_VNC_DEFAULTS_NODE, &exit_vnc_config_cmd); +	install_element(BGP_VNC_NVE_GROUP_NODE, &exit_vnc_config_cmd); +	install_element(BGP_VNC_L2_GROUP_NODE, &exit_vnc_config_cmd); + +	install_element(CONFIG_NODE, &key_chain_cmd); +	install_element(CONFIG_NODE, &vtysh_route_map_cmd); +	install_element(CONFIG_NODE, &vtysh_line_vty_cmd); +	install_element(KEYCHAIN_NODE, &key_cmd); +	install_element(KEYCHAIN_NODE, &key_chain_cmd); +	install_element(KEYCHAIN_KEY_NODE, &key_chain_cmd); +	install_element(CONFIG_NODE, &vtysh_interface_cmd); +	install_element(CONFIG_NODE, &vtysh_no_interface_cmd); +	install_element(CONFIG_NODE, &vtysh_no_interface_vrf_cmd); +	install_element(CONFIG_NODE, &vtysh_pseudowire_cmd); +	install_element(INTERFACE_NODE, &vtysh_link_params_cmd); +	install_element(ENABLE_NODE, &vtysh_show_running_config_cmd); +	install_element(ENABLE_NODE, &vtysh_copy_running_config_cmd); + +	install_element(CONFIG_NODE, &vtysh_vrf_cmd); +	install_element(CONFIG_NODE, &vtysh_no_vrf_cmd); + +	/* "write terminal" command. */ +	install_element(ENABLE_NODE, &vtysh_write_terminal_cmd); + +	install_element(CONFIG_NODE, &vtysh_integrated_config_cmd); +	install_element(CONFIG_NODE, &no_vtysh_integrated_config_cmd); + +	/* "write memory" command. */ +	install_element(ENABLE_NODE, &vtysh_write_memory_cmd); + +	install_element(VIEW_NODE, &vtysh_terminal_length_cmd); +	install_element(VIEW_NODE, &vtysh_terminal_no_length_cmd); +	install_element(VIEW_NODE, &vtysh_show_daemons_cmd); + +	install_element(VIEW_NODE, &vtysh_ping_cmd); +	install_element(VIEW_NODE, &vtysh_ping_ip_cmd); +	install_element(VIEW_NODE, &vtysh_traceroute_cmd); +	install_element(VIEW_NODE, &vtysh_traceroute_ip_cmd); +	install_element(VIEW_NODE, &vtysh_ping6_cmd); +	install_element(VIEW_NODE, &vtysh_traceroute6_cmd);  #if defined(HAVE_SHELL_ACCESS) -  install_element (VIEW_NODE, &vtysh_telnet_cmd); -  install_element (VIEW_NODE, &vtysh_telnet_port_cmd); -  install_element (VIEW_NODE, &vtysh_ssh_cmd); +	install_element(VIEW_NODE, &vtysh_telnet_cmd); +	install_element(VIEW_NODE, &vtysh_telnet_port_cmd); +	install_element(VIEW_NODE, &vtysh_ssh_cmd);  #endif  #if defined(HAVE_SHELL_ACCESS) -  install_element (ENABLE_NODE, &vtysh_start_shell_cmd); -  install_element (ENABLE_NODE, &vtysh_start_bash_cmd); -  install_element (ENABLE_NODE, &vtysh_start_zsh_cmd); +	install_element(ENABLE_NODE, &vtysh_start_shell_cmd); +	install_element(ENABLE_NODE, &vtysh_start_bash_cmd); +	install_element(ENABLE_NODE, &vtysh_start_zsh_cmd);  #endif -  install_element (VIEW_NODE, &vtysh_show_memory_cmd); -  install_element (VIEW_NODE, &vtysh_show_modules_cmd); - -  install_element (VIEW_NODE, &vtysh_show_work_queues_cmd); -  install_element (VIEW_NODE, &vtysh_show_work_queues_daemon_cmd); - -  install_element (VIEW_NODE, &vtysh_show_thread_cmd); - -  /* Logging */ -  install_element (VIEW_NODE, &vtysh_show_logging_cmd); -  install_element (CONFIG_NODE, &vtysh_log_stdout_cmd); -  install_element (CONFIG_NODE, &vtysh_log_stdout_level_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_stdout_cmd); -  install_element (CONFIG_NODE, &vtysh_log_file_cmd); -  install_element (CONFIG_NODE, &vtysh_log_file_level_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_file_cmd); -  install_element (CONFIG_NODE, &vtysh_log_monitor_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_monitor_cmd); -  install_element (CONFIG_NODE, &vtysh_log_syslog_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_syslog_cmd); -  install_element (CONFIG_NODE, &vtysh_log_trap_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_trap_cmd); -  install_element (CONFIG_NODE, &vtysh_log_facility_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_facility_cmd); -  install_element (CONFIG_NODE, &vtysh_log_record_priority_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_record_priority_cmd); -  install_element (CONFIG_NODE, &vtysh_log_timestamp_precision_cmd); -  install_element (CONFIG_NODE, &no_vtysh_log_timestamp_precision_cmd); - -  install_element (CONFIG_NODE, &vtysh_service_password_encrypt_cmd); -  install_element (CONFIG_NODE, &no_vtysh_service_password_encrypt_cmd); - -  install_element (CONFIG_NODE, &vtysh_password_cmd); -  install_element (CONFIG_NODE, &vtysh_password_text_cmd); -  install_element (CONFIG_NODE, &vtysh_enable_password_cmd); -  install_element (CONFIG_NODE, &vtysh_enable_password_text_cmd); -  install_element (CONFIG_NODE, &no_vtysh_enable_password_cmd); +	install_element(VIEW_NODE, &vtysh_show_memory_cmd); +	install_element(VIEW_NODE, &vtysh_show_modules_cmd); + +	install_element(VIEW_NODE, &vtysh_show_work_queues_cmd); +	install_element(VIEW_NODE, &vtysh_show_work_queues_daemon_cmd); + +	install_element(VIEW_NODE, &vtysh_show_thread_cmd); + +	/* Logging */ +	install_element(VIEW_NODE, &vtysh_show_logging_cmd); +	install_element(CONFIG_NODE, &vtysh_log_stdout_cmd); +	install_element(CONFIG_NODE, &vtysh_log_stdout_level_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_stdout_cmd); +	install_element(CONFIG_NODE, &vtysh_log_file_cmd); +	install_element(CONFIG_NODE, &vtysh_log_file_level_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_file_cmd); +	install_element(CONFIG_NODE, &vtysh_log_monitor_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_monitor_cmd); +	install_element(CONFIG_NODE, &vtysh_log_syslog_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_syslog_cmd); +	install_element(CONFIG_NODE, &vtysh_log_trap_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_trap_cmd); +	install_element(CONFIG_NODE, &vtysh_log_facility_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_facility_cmd); +	install_element(CONFIG_NODE, &vtysh_log_record_priority_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_record_priority_cmd); +	install_element(CONFIG_NODE, &vtysh_log_timestamp_precision_cmd); +	install_element(CONFIG_NODE, &no_vtysh_log_timestamp_precision_cmd); + +	install_element(CONFIG_NODE, &vtysh_service_password_encrypt_cmd); +	install_element(CONFIG_NODE, &no_vtysh_service_password_encrypt_cmd); + +	install_element(CONFIG_NODE, &vtysh_password_cmd); +	install_element(CONFIG_NODE, &vtysh_password_text_cmd); +	install_element(CONFIG_NODE, &vtysh_enable_password_cmd); +	install_element(CONFIG_NODE, &vtysh_enable_password_text_cmd); +	install_element(CONFIG_NODE, &no_vtysh_enable_password_cmd);  }  | 
