File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird / nest / cmds.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 19:50:23 2021 UTC (3 years, 3 months ago) by misho
Branches: bird, MAIN
CVS tags: v1_6_8p3, HEAD
bird 1.6.8

    1: /*
    2:  *	BIRD Internet Routing Daemon -- CLI Commands Which Don't Fit Anywhere Else
    3:  *
    4:  *	(c) 2000 Martin Mares <mj@ucw.cz>
    5:  *
    6:  *	Can be freely distributed and used under the terms of the GNU GPL.
    7:  */
    8: 
    9: #include "nest/bird.h"
   10: #include "nest/protocol.h"
   11: #include "nest/route.h"
   12: #include "nest/cli.h"
   13: #include "conf/conf.h"
   14: #include "nest/cmds.h"
   15: #include "lib/string.h"
   16: #include "lib/resource.h"
   17: #include "filter/filter.h"
   18: 
   19: extern int shutting_down;
   20: extern int configuring;
   21: 
   22: void
   23: cmd_show_status(void)
   24: {
   25:   byte tim[TM_DATETIME_BUFFER_SIZE];
   26: 
   27:   cli_msg(-1000, "BIRD " BIRD_VERSION);
   28:   tm_format_datetime(tim, &config->tf_base, now);
   29:   cli_msg(-1011, "Router ID is %R", config->router_id);
   30:   cli_msg(-1011, "Current server time is %s", tim);
   31:   tm_format_datetime(tim, &config->tf_base, boot_time);
   32:   cli_msg(-1011, "Last reboot on %s", tim);
   33:   tm_format_datetime(tim, &config->tf_base, config->load_time);
   34:   cli_msg(-1011, "Last reconfiguration on %s", tim);
   35: 
   36:   graceful_restart_show_status();
   37: 
   38:   if (shutting_down)
   39:     cli_msg(13, "Shutdown in progress");
   40:   else if (configuring)
   41:     cli_msg(13, "Reconfiguration in progress");
   42:   else
   43:     cli_msg(13, "Daemon is up and running");
   44: }
   45: 
   46: void
   47: cmd_show_symbols(struct sym_show_data *sd)
   48: {
   49:   if (sd->sym)
   50:     cli_msg(1010, "%-8s\t%s", sd->sym->name, cf_symbol_class_name(sd->sym));
   51:   else
   52:   {
   53:     HASH_WALK(config->sym_hash, next, sym)
   54:     {
   55:       if (!sym->scope->active)
   56: 	continue;
   57: 
   58:       if (sd->type && (sym->class != sd->type))
   59: 	continue;
   60: 
   61:       cli_msg(-1010, "%-8s\t%s", sym->name, cf_symbol_class_name(sym));
   62:     }
   63:     HASH_WALK_END;
   64: 
   65:     cli_msg(0, "");
   66:   }
   67: }
   68: 
   69: static void
   70: print_size(char *dsc, size_t val)
   71: {
   72:   char *px = " kMG";
   73:   int i = 0;
   74:   while ((val >= 10000) && (i < 3))
   75:     {
   76:       val = (val + 512) / 1024;
   77:       i++;
   78:     }
   79: 
   80:   cli_msg(-1018, "%-17s %4u %cB", dsc, (unsigned) val, px[i]);
   81: }
   82: 
   83: extern pool *rt_table_pool;
   84: extern pool *rta_pool;
   85: extern pool *roa_pool;
   86: extern pool *proto_pool;
   87: 
   88: void
   89: cmd_show_memory(void)
   90: {
   91:   cli_msg(-1018, "BIRD memory usage");
   92:   print_size("Routing tables:", rmemsize(rt_table_pool));
   93:   print_size("Route attributes:", rmemsize(rta_pool));
   94:   print_size("ROA tables:", rmemsize(roa_pool));
   95:   print_size("Protocols:", rmemsize(proto_pool));
   96:   print_size("Total:", rmemsize(&root_pool));
   97:   cli_msg(0, "");
   98: }
   99: 
  100: void
  101: cmd_eval(struct f_inst *expr)
  102: {
  103:   struct f_val v = f_eval(expr, this_cli->parser_pool);
  104: 
  105:   if (v.type == T_RETURN)
  106:     {
  107:       cli_msg(8008, "runtime error");
  108:       return;
  109:     }
  110: 
  111:   buffer buf;
  112:   LOG_BUFFER_INIT(buf);
  113:   val_format(v, &buf);
  114:   cli_msg(23, "%s", buf.start);
  115: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>