]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Add dump_request_target
authorIgor Putovny <igor.putovny@nic.cz>
Tue, 8 Apr 2025 12:03:15 +0000 (14:03 +0200)
committerIgor Putovny <igor.putovny@nic.cz>
Tue, 29 Apr 2025 13:01:15 +0000 (15:01 +0200)
lib/birdlib.h
nest/config.Y
sysdep/unix/io.c
sysdep/unix/unix.h

index 70ea3fd3895995539b5f7f51a185ddb912aa8dcd..45b9cfc06e1e625932a9a237c39dac6dbea0dd39 100644 (file)
@@ -248,10 +248,13 @@ static inline u32 u64_hash(u64 v)
 { return hash_value(u64_hash0(v, HASH_PARAM, 0)); }
 
 /* Dumping */
+struct dump_request_target {};
+
 struct dump_request {
   u64 size;
   btime begin;
   uint indent, offset;
+  struct dump_request_target *target;
   void (*write)(struct dump_request *, const char *fmt, ...);
   void (*report)(struct dump_request *, int state, const char *fmt, ...);
 };
index 36577227e275634685a28bced79277cf366ea66b..d5744549d13c07ac727bb655fe40827c226537c0 100644 (file)
@@ -866,25 +866,25 @@ sym_args:
 
 CF_CLI_HELP(DUMP, ..., [[Dump debugging information to the given file]])
 CF_CLI(DUMP RESOURCES, text,, [[Dump all allocated resource]])
-{ cmd_dump_file(this_cli, $3, "resources", resource_dump); } ;
+{ cmd_dump_file(this_cli, $3, "resources", resource_dump, NULL); } ;
 CF_CLI(DUMP SOCKETS, text,, [[Dump open sockets]])
-{ cmd_dump_file(this_cli, $3, "sockets", sk_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "sockets", sk_dump_all, NULL); } ;
 CF_CLI(DUMP AO KEYS, text,, [[Dump TCP-AO keys on sockets ]])
-{ cmd_dump_file(this_cli, $4, "AO keys", sk_dump_ao_all); } ;
+{ cmd_dump_file(this_cli, $4, "AO keys", sk_dump_ao_all, NULL); } ;
 CF_CLI(DUMP EVENTS, text,, [[Dump event log]])
-{ cmd_dump_file(this_cli, $3, "event log", io_log_dump); } ;
+{ cmd_dump_file(this_cli, $3, "event log", io_log_dump, NULL); } ;
 CF_CLI(DUMP INTERFACES, text,, [[Dump interface information]])
-{ cmd_dump_file(this_cli, $3, "interfaces", if_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "interfaces", if_dump_all, NULL); } ;
 CF_CLI(DUMP NEIGHBORS, text,, [[Dump neighbor cache]])
-{ cmd_dump_file(this_cli, $3, "neighbor cache", neigh_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "neighbor cache", neigh_dump_all, NULL); } ;
 CF_CLI(DUMP ATTRIBUTES, text,, [[Dump attribute cache]])
-{ cmd_dump_file(this_cli, $3, "attribute cache", rta_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "attribute cache", rta_dump_all, NULL); } ;
 CF_CLI(DUMP ROUTES, text,, [[Dump routing table]])
-{ cmd_dump_file(this_cli, $3, "routing tables", rt_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "routing tables", rt_dump_all, NULL); } ;
 CF_CLI(DUMP PROTOCOLS, text,, [[Dump protocol information]])
-{ cmd_dump_file(this_cli, $3, "protocols", protos_dump_all); } ;
+{ cmd_dump_file(this_cli, $3, "protocols", protos_dump_all, NULL); } ;
 CF_CLI(DUMP FILTER ALL, text,, [[Dump all filters in linearized form]])
-{ cmd_dump_file(this_cli, $4, "filter bytecode", filters_dump_all); } ;
+{ cmd_dump_file(this_cli, $4, "filter bytecode", filters_dump_all, NULL); } ;
 
 CF_CLI(EVAL, term, <expr>, [[Evaluate an expression]])
 { cmd_eval(f_linearize($2, 1)); } ;
index cc422ee1c2648238e6fe00dcef5cc71685b8c0fa..8b4be0d2dff77c3d449d2e24143e046e69429738 100644 (file)
@@ -259,7 +259,7 @@ cmd_dump_report(struct dump_request *dr, int state, const char *fmt, ...)
 }
 
 void
-cmd_dump_file(struct cli *cli, const char *file, const char *what, void (*dump)(struct dump_request *))
+cmd_dump_file(struct cli *cli, const char *file, const char *what, void (*dump)(struct dump_request *), struct dump_request_target *target)
 {
   if (cli->restricted)
     return cli_printf(cli, 8007, "Access denied");
@@ -269,6 +269,7 @@ cmd_dump_file(struct cli *cli, const char *file, const char *what, void (*dump)(
 
   req->cli = cli;
   req->dr.report = cmd_dump_report;
+  req->dr.target = target;
 
   dump_to_file_run(&req->dr, file, what, dump);
 }
index 2b3c5d4ea99c7be193a6c0342d1edb08e0a8b871..0fea5c091826eb58cb234526689f66e4db12e294 100644 (file)
@@ -119,7 +119,7 @@ ip_addr resolve_hostname(const char *host, int type, const char **err_msg);
 struct dump_request *dump_to_file_init(off_t offset);
 void dump_to_file_run(struct dump_request *dr, const char *file, const char *what, void (*dump)(struct dump_request *));
 
-void cmd_dump_file(struct cli *cli, const char *file, const char *what, void (*dump)(struct dump_request *));
+void cmd_dump_file(struct cli *cli, const char *file, const char *what, void (*dump)(struct dump_request *), struct dump_request_target *target);
 
 /* krt.c bits */