Commit ea2ae6dd authored by Ondrej Zajicek's avatar Ondrej Zajicek
Browse files

Change import/preimport to export/preexport to be consistent with filters.

parent d72a0ac2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -435,7 +435,7 @@ This argument can be omitted if there exists only a single instance.
	<tag>show symbols</tag>
	Show the list of symbols defined in the configuration (names of protocols, routing tables etc.).

	<tag>show route [[for] <m/prefix/|<m/IP/] [table <m/sym/] [filter <m/f/|where <m/c/] [(import|preimport) <m/p/] [protocol <m/p/] [<m/options/]</tag>
	<tag>show route [[for] <m/prefix/|<m/IP/] [table <m/sym/] [filter <m/f/|where <m/c/] [(export|preexport) <m/p/] [protocol <m/p/] [<m/options/]</tag>
	Show contents of a routing table (by default of the main one),
	that is routes, their metrics and (in case the <cf/all/ switch is given)
	all their attributes.
@@ -450,9 +450,9 @@ This argument can be omitted if there exists only a single instance.
	<p>You can also ask for printing only routes processed and accepted by
	a given filter (<cf>filter <m/name/</cf> or <cf>filter { <m/filter/ }
	</cf> or matching a given condition (<cf>where <m/condition/</cf>).
	The <cf/import/ and <cf/preimport/ switches ask for printing of entries
	that are imported to the specified protocol. With <cf/preimport/, the
	import filter of the protocol is skipped.
	The <cf/export/ and <cf/preexport/ switches ask for printing of entries
	that are exported to the specified protocol. With <cf/preexport/, the
	export filter of the protocol is skipped.

	<p>You can also select just routes added by a specific protocol.
	<cf>protocol <m/p/</cf>.
+10 −10
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ CF_DECLS
CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE, DISABLED, DEBUG, ALL, OFF, DIRECT)
CF_KEYWORDS(INTERFACE, IMPORT, EXPORT, FILTER, NONE, TABLE, STATES, ROUTES, FILTERS)
CF_KEYWORDS(PASSWORD, FROM, PASSIVE, TO, ID, EVENTS, PACKETS, PROTOCOLS, INTERFACES)
CF_KEYWORDS(PRIMARY, STATS, COUNT, FOR, COMMANDS, PREIMPORT, GENERATE)
CF_KEYWORDS(PRIMARY, STATS, COUNT, FOR, COMMANDS, PREEXPORT, GENERATE)

CF_ENUM(T_ENUM_RTS, RTS_, DUMMY, STATIC, INHERIT, DEVICE, STATIC_DEVICE, REDIRECT,
	RIP, OSPF, OSPF_IA, OSPF_EXT1, OSPF_EXT2, BGP, PIPE)
@@ -56,7 +56,7 @@ CF_ENUM(T_ENUM_RTD, RTD_, ROUTER, DEVICE, BLACKHOLE, UNREACHABLE, PROHIBIT)
%type <r> rtable
%type <s> optsym
%type <ra> r_args
%type <i> echo_mask echo_size debug_mask debug_list debug_flag import_or_preimport
%type <i> echo_mask echo_size debug_mask debug_list debug_flag export_or_preexport
%type <t> proto_patt

CF_GRAMMAR
@@ -298,7 +298,7 @@ CF_CLI(SHOW INTERFACES,,, [[Show network interfaces]])
CF_CLI(SHOW INTERFACES SUMMARY,,, [[Show summary of network interfaces]])
{ if_show_summary(); } ;

CF_CLI(SHOW ROUTE, r_args, [[[<prefix>|for <prefix>|for <ip>] [table <t>] [filter <f>|where <cond>] [all] [primary] [(import|preimport) <p>] [protocol <p>] [stats|count]]], [[Show routing table]])
CF_CLI(SHOW ROUTE, r_args, [[[<prefix>|for <prefix>|for <ip>] [table <t>] [filter <f>|where <cond>] [all] [primary] [(export|preexport) <p>] [protocol <p>] [stats|count]]], [[Show routing table]])
{ rt_show($3); } ;

r_args:
@@ -344,14 +344,14 @@ r_args:
     $$ = $1;
     $$->primary_only = 1;
   }
 | r_args import_or_preimport SYM {
 | r_args export_or_preexport SYM {
     struct proto_config *c = (struct proto_config *) $3->def;
     $$ = $1;
     if ($$->import_mode) cf_error("Protocol specified twice");
     if ($$->export_mode) cf_error("Protocol specified twice");
     if ($3->class != SYM_PROTO || !c->proto) cf_error("%s is not a protocol", $3->name);
     $$->import_mode = $2;
     $$->export_mode = $2;
     $$->primary_only = 1;
     $$->import_protocol = c->proto;
     $$->export_protocol = c->proto;
     $$->running_on_config = c->proto->cf->global;
   }
 | r_args PROTOCOL SYM {
@@ -372,9 +372,9 @@ r_args:
   }
 ;

import_or_preimport:
   PREIMPORT { $$ = 1; }
 | IMPORT { $$ = 2; }
export_or_preexport:
   PREEXPORT { $$ = 1; }
 | EXPORT { $$ = 2; }
 ;

CF_CLI(SHOW SYMBOLS, optsym, [<symbol>], [[Show all known symbolic names]])
+2 −2
Original line number Diff line number Diff line
@@ -212,8 +212,8 @@ struct rt_show_data {
  int verbose;
  struct fib_iterator fit;
  struct proto *show_protocol;
  struct proto *import_protocol;
  int import_mode, primary_only;
  struct proto *export_protocol;
  int export_mode, primary_only;
  struct config *running_on_config;
  int net_counter, rt_counter, show_counter;
  int stats, show_for;
+6 −6
Original line number Diff line number Diff line
@@ -978,7 +978,7 @@ rt_show_net(struct cli *c, net *n, struct rt_show_data *d)
    {
      struct ea_list *tmpa, *old_tmpa;
      struct proto *p0 = e->attrs->proto;
      struct proto *p1 = d->import_protocol;
      struct proto *p1 = d->export_protocol;
      struct proto *p2 = d->show_protocol;
      d->rt_counter++;
      ee = e;
@@ -986,12 +986,12 @@ rt_show_net(struct cli *c, net *n, struct rt_show_data *d)
      old_tmpa = tmpa = p0->make_tmp_attrs ? p0->make_tmp_attrs(e, rte_update_pool) : NULL;
      ok = (d->filter == FILTER_ACCEPT || f_run(d->filter, &e, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) <= F_ACCEPT);
      if (p2 && p2 != p0) ok = 0;
      if (ok && d->import_mode)
      if (ok && d->export_mode)
	{
	  int ic = (p1->import_control ? p1->import_control(p1, &e, &tmpa, rte_update_pool) : 0);
	  if (ic < 0)
	    ok = 0;
	  else if (!ic && d->import_mode > 1)
	  else if (!ic && d->export_mode > 1)
	    {
	      if (p1->out_filter == FILTER_REJECT ||
		  p1->out_filter && f_run(p1->out_filter, &e, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) > F_ACCEPT)
@@ -1033,9 +1033,9 @@ rt_show_cont(struct cli *c)
	  cli_printf(c, 8004, "Stopped due to reconfiguration");
	  goto done;
	}
      if (d->import_protocol &&
	  d->import_protocol->core_state != FS_HAPPY &&
	  d->import_protocol->core_state != FS_FEEDING)
      if (d->export_protocol &&
	  d->export_protocol->core_state != FS_HAPPY &&
	  d->export_protocol->core_state != FS_FEEDING)
	{
	  cli_printf(c, 8005, "Protocol is down");
	  goto done;