[master] 1819377 Let mgt_vcl register its own cli commands

Poul-Henning Kamp phk at FreeBSD.org
Sun May 22 01:06:05 CEST 2016


commit 1819377293a4dfa106fa45e3717577e9219c228f
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Sat May 21 22:22:45 2016 +0000

    Let mgt_vcl register its own cli commands

diff --git a/bin/varnishd/mgt/mgt.h b/bin/varnishd/mgt/mgt.h
index 3d03cc3..7152530 100644
--- a/bin/varnishd/mgt/mgt.h
+++ b/bin/varnishd/mgt/mgt.h
@@ -68,6 +68,7 @@ void mgt_cli_master(const char *M_arg);
 void mgt_cli_secret(const char *S_arg);
 void mgt_cli_close_all(void);
 void mgt_DumpRstCli(void);
+void mgt_cli_init_cls(void);
 
 /* mgt_jail.c */
 
diff --git a/bin/varnishd/mgt/mgt_cli.c b/bin/varnishd/mgt/mgt_cli.c
index dcebb2a..26a7a50 100644
--- a/bin/varnishd/mgt/mgt_cli.c
+++ b/bin/varnishd/mgt/mgt_cli.c
@@ -100,18 +100,11 @@ mcf_banner(struct cli *cli, const char *const *av, void *priv)
 
 /*--------------------------------------------------------------------*/
 
-/* XXX: what order should this list be in ? */
 static struct cli_proto cli_proto[] = {
 	{ CLICMD_BANNER,		"", mcf_banner },
 	{ CLICMD_SERVER_STATUS,		"", mcf_server_status },
 	{ CLICMD_SERVER_START,		"", mcf_server_start },
 	{ CLICMD_SERVER_STOP,		"", mcf_server_stop },
-	{ CLICMD_VCL_LOAD,		"", mcf_vcl_load },
-	{ CLICMD_VCL_INLINE,		"", mcf_vcl_inline },
-	{ CLICMD_VCL_USE,		"", mcf_vcl_use },
-	{ CLICMD_VCL_STATE,		"", mcf_vcl_state },
-	{ CLICMD_VCL_DISCARD,		"", mcf_vcl_discard },
-	{ CLICMD_VCL_LIST,		"", mcf_vcl_list },
 	{ CLICMD_PARAM_SHOW,		"", mcf_param_show },
 	{ CLICMD_PARAM_SET,		"", mcf_param_set },
 	{ CLICMD_PANIC_SHOW,		"", mcf_panic_show },
@@ -363,7 +356,7 @@ mgt_cli_cb_after(const struct cli *cli)
 
 /*--------------------------------------------------------------------*/
 
-static void
+void
 mgt_cli_init_cls(void)
 {
 
@@ -414,8 +407,6 @@ mgt_cli_setup(int fdi, int fdo, int verbose, const char *ident,
 
 	(void)ident;
 	(void)verbose;
-	if (mgt_cls == NULL)
-		mgt_cli_init_cls();
 
 	cli = VCLS_AddFd(mgt_cls, fdi, fdo, closefunc, priv);
 
diff --git a/bin/varnishd/mgt/mgt_cli.h b/bin/varnishd/mgt/mgt_cli.h
index 49d849a..8757c2c 100644
--- a/bin/varnishd/mgt/mgt_cli.h
+++ b/bin/varnishd/mgt/mgt_cli.h
@@ -39,13 +39,5 @@ cli_func_t mcf_panic_clear;
 cli_func_t mcf_param_show;
 cli_func_t mcf_param_set;
 
-/* mgt_vcc.c */
-cli_func_t mcf_vcl_load;
-cli_func_t mcf_vcl_inline;
-cli_func_t mcf_vcl_use;
-cli_func_t mcf_vcl_state;
-cli_func_t mcf_vcl_discard;
-cli_func_t mcf_vcl_list;
-
 /* stevedore.c */
 extern struct cli_proto cli_stv[];
diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c
index 47ae1ea..42a0977 100644
--- a/bin/varnishd/mgt/mgt_main.c
+++ b/bin/varnishd/mgt/mgt_main.c
@@ -691,6 +691,8 @@ main(int argc, char * const *argv)
 		}
 	}
 
+	mgt_cli_init_cls();		// CLI commands can be registered
+
 	if (!jailed)
 		VJ_Init(NULL);
 
diff --git a/bin/varnishd/mgt/mgt_vcl.c b/bin/varnishd/mgt/mgt_vcl.c
index 858c5ec..770c551 100644
--- a/bin/varnishd/mgt/mgt_vcl.c
+++ b/bin/varnishd/mgt/mgt_vcl.c
@@ -42,6 +42,7 @@
 
 #include "vcli.h"
 #include "vcli_priv.h"
+#include "vcli_serve.h"
 #include "vev.h"
 #include "vtim.h"
 
@@ -271,7 +272,7 @@ mgt_push_vcls_and_start(struct cli *cli, unsigned *status, char **p)
 
 /*--------------------------------------------------------------------*/
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_inline(struct cli *cli, const char * const *av, void *priv)
 {
 	struct vclprog *vp;
@@ -288,7 +289,7 @@ mcf_vcl_inline(struct cli *cli, const char * const *av, void *priv)
 	mgt_new_vcl(cli, av[2], av[3], "<vcl.inline>", av[4], 0);
 }
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_load(struct cli *cli, const char * const *av, void *priv)
 {
 	struct vclprog *vp;
@@ -317,7 +318,7 @@ mcf_find_vcl(struct cli *cli, const char *name)
 	return (NULL);
 }
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_state(struct cli *cli, const char * const *av, void *priv)
 {
 	struct vclprog *vp;
@@ -353,7 +354,7 @@ mcf_vcl_state(struct cli *cli, const char * const *av, void *priv)
 	}
 }
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_use(struct cli *cli, const char * const *av, void *priv)
 {
 	unsigned status;
@@ -386,7 +387,7 @@ mcf_vcl_use(struct cli *cli, const char * const *av, void *priv)
 	free(p);
 }
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_discard(struct cli *cli, const char * const *av, void *priv)
 {
 	unsigned status;
@@ -411,7 +412,7 @@ mcf_vcl_discard(struct cli *cli, const char * const *av, void *priv)
 	mgt_vcl_del(vp);
 }
 
-void
+static void __match_proto__(cli_func_t)
 mcf_vcl_list(struct cli *cli, const char * const *av, void *priv)
 {
 	unsigned status;
@@ -455,6 +456,18 @@ mgt_vcl_poker(const struct vev *e, int what)
 
 /*--------------------------------------------------------------------*/
 
+static struct cli_proto cli_vcl[] = {
+	{ CLICMD_VCL_LOAD,		"", mcf_vcl_load },
+	{ CLICMD_VCL_INLINE,		"", mcf_vcl_inline },
+	{ CLICMD_VCL_USE,		"", mcf_vcl_use },
+	{ CLICMD_VCL_STATE,		"", mcf_vcl_state },
+	{ CLICMD_VCL_DISCARD,		"", mcf_vcl_discard },
+	{ CLICMD_VCL_LIST,		"", mcf_vcl_list },
+	{ NULL }
+};
+
+/*--------------------------------------------------------------------*/
+
 static void
 mgt_vcl_atexit(void)
 {
@@ -482,4 +495,6 @@ mgt_vcl_init(void)
 	AZ(vev_add(mgt_evb, e_poker));
 
 	AZ(atexit(mgt_vcl_atexit));
+
+	VCLS_AddFunc(mgt_cls, 0, cli_vcl);
 }



More information about the varnish-commit mailing list