+ return ERROR_OK;
+}
+
+static const struct command_registration server_command_handlers[] = {
+ {
+ .name = "shutdown",
+ .handler = &handle_shutdown_command,
+ .mode = COMMAND_ANY,
+ .help = "shut the server down",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
+int server_register_commands(struct command_context *cmd_ctx)
+{
+ int retval = telnet_register_commands(cmd_ctx);
+ if (ERROR_OK != retval)
+ return retval;
+
+ retval = tcl_register_commands(cmd_ctx);
+ if (ERROR_OK != retval)
+ return retval;
+
+ return register_commands(cmd_ctx, NULL, server_command_handlers);
+}
+
+SERVER_PORT_COMMAND()
+{
+ switch (CMD_ARGC) {
+ case 0:
+ command_print(CMD_CTX, "%d", *out);
+ break;
+ case 1:
+ {
+ uint16_t port;
+ COMMAND_PARSE_NUMBER(u16, CMD_ARGV[0], port);
+ *out = port;
+ break;
+ }
+ default:
+ return ERROR_INVALID_ARGUMENTS;
+ }
+ return ERROR_OK;
+}
+
+SERVER_PIPE_COMMAND()
+{
+ switch (CMD_ARGC) {
+ case 0:
+ command_print(CMD_CTX, "%s", *out);
+ break;
+ case 1:
+ {
+ const char * t = strdup(CMD_ARGV[0]);
+ free((void *)*out);
+ *out = t;
+ break;
+ }
+ default:
+ return ERROR_INVALID_ARGUMENTS;
+ }
+ return ERROR_OK;