/******************************************************************** * FUNCTION show_version *********************************************************************/ static void show_version(void) { xmlChar versionbuffer[NCX_VERSION_BUFFSIZE]; status_t res = ncx_get_version(versionbuffer, NCX_VERSION_BUFFSIZE); if (res == NO_ERR) { log_write( "\nnetconfd version %s\n", versionbuffer ); } else { SET_ERROR( res ); } agt_request_shutdown(NCX_SHUT_EXIT); }
/******************************************************************** * FUNCTION show_server_banner * * Show startup server string * *********************************************************************/ static void show_server_banner (void) { #define BANNER_BUFFLEN 32 xmlChar buff[BANNER_BUFFLEN]; status_t res; if (LOGINFO) { res = ncx_get_version(buff, BANNER_BUFFLEN); if (res == NO_ERR) { log_info("\nRunning netconfd server (%s)\n", buff); } else { log_info("\nRunning netconfd server\n"); } } } /* show_server_banner */
/******************************************************************** * FUNCTION do_show (local RPC) * * show module=mod-name * modules * def=def-nmae * * Get the specified parameter and show the internal info, * based on the parameter * * INPUTS: * server_cb == server control block to use * rpc == RPC method for the show command * line == CLI input in progress * len == offset into line buffer to start parsing * * RETURNS: * status *********************************************************************/ status_t do_show (server_cb_t *server_cb, obj_template_t *rpc, const xmlChar *line, uint32 len) { val_value_t *valset, *parm; ncx_module_t *mod; status_t res; boolean imode, done; help_mode_t mode; xmlChar versionbuffer[NCX_VERSION_BUFFSIZE]; res = NO_ERR; imode = interactive_mode(); valset = get_valset(server_cb, rpc, &line[len], &res); if (valset && res == NO_ERR) { mode = HELP_MODE_NORMAL; /* check if the 'brief' flag is set first */ parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_BRIEF); if (parm && parm->res == NO_ERR) { mode = HELP_MODE_BRIEF; } else { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_FULL); if (parm && parm->res == NO_ERR) { mode = HELP_MODE_FULL; } } /* get the 1 of N 'showtype' choice */ done = FALSE; /* show cli */ parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_CLI); if (parm) { do_show_cli(server_cb); done = TRUE; } /* show local <foo> */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_LOCAL); if (parm) { res = do_show_var(server_cb, VAL_STR(parm), VAR_TYP_LOCAL, FALSE, mode); done = TRUE; } } /* show locals */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_LOCALS); if (parm) { res = do_show_vars(server_cb, mode, TRUE, FALSE, FALSE); done = TRUE; } } /* show objects */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_OBJECTS); if (parm) { res = do_show_objects(server_cb, mode); done = TRUE; } } /* show global */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_GLOBAL); if (parm) { res = do_show_var(server_cb, VAL_STR(parm), VAR_TYP_GLOBAL, FALSE, mode); done = TRUE; } } /* show globals */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_GLOBALS); if (parm) { res = do_show_vars(server_cb, mode, TRUE, TRUE, FALSE); done = TRUE; } } /* show session */ parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_SESSION); if (parm) { do_show_session(server_cb, mode); done = TRUE; } /* show system */ parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_SYSTEM); if (parm) { do_show_system(server_cb, mode); done = TRUE; } /* show var <foo> */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_VAR); if (parm) { res = do_show_var(server_cb, VAL_STR(parm), VAR_TYP_NONE, TRUE, mode); done = TRUE; } } /* show vars */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_VARS); if (parm) { res = do_show_vars(server_cb, mode, FALSE, FALSE, TRUE); done = TRUE; } } /* show module <foo> */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_MODULE); if (parm) { mod = find_module(server_cb, VAL_STR(parm)); if (mod) { res = do_show_module(mod, mode); } else { if (imode) { log_stdout("\nyangcli-pro: module (%s) not loaded", VAL_STR(parm)); } else { log_error("\nyangcli-pro: module (%s) not loaded", VAL_STR(parm)); } } done = TRUE; } } /* show modules */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, YANGCLI_MODULES); if (parm) { res = do_show_modules(server_cb, mode); done = TRUE; } } /* show version */ if (!done) { parm = val_find_child(valset, YANGCLI_MOD, NCX_EL_VERSION); if (parm) { res = ncx_get_version(versionbuffer, NCX_VERSION_BUFFSIZE); if (res == NO_ERR) { if (imode) { log_stdout("\nyangcli version %s\n", versionbuffer); } else { log_write("\nyangcli version %s\n", versionbuffer); } } done = TRUE; } } } if (valset) { val_free_value(valset); } return res; } /* do_show */