[master] a182f02d2 Drop the unified import structure, it doesnt make anything easier after all
Poul-Henning Kamp
phk at FreeBSD.org
Tue May 28 09:08:12 UTC 2019
commit a182f02d23fa51d99fa14f531993ffa82a8d6f41
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue May 28 07:39:07 2019 +0000
Drop the unified import structure, it doesnt make anything easier after all
diff --git a/bin/varnishd/mgt/mgt_symtab.c b/bin/varnishd/mgt/mgt_symtab.c
index 4a5dc96e3..64c1bef4d 100644
--- a/bin/varnishd/mgt/mgt_symtab.c
+++ b/bin/varnishd/mgt/mgt_symtab.c
@@ -59,19 +59,16 @@ mgt_vcl_symtab_val(const struct vjsn_val *vv, const char *val)
}
static void
-mgt_vcl_import_vcl(struct vclprog *vp1, struct import *ip, const struct vjsn_val *vv)
+mgt_vcl_import_vcl(struct vclprog *vp1, const struct vjsn_val *vv)
{
struct vclprog *vp2;
CHECK_OBJ_NOTNULL(vp1, VCLPROG_MAGIC);
- AN(ip);
AN(vv);
vp2 = mcf_vcl_byname(mgt_vcl_symtab_val(vv, "name"));
CHECK_OBJ_NOTNULL(vp2, VCLPROG_MAGIC);
- ip->vcl = vp2;
- VTAILQ_INSERT_TAIL(&vp2->exports, ip, to);
- mgt_vcl_dep_add(vp1, vp2);
+ mgt_vcl_dep_add(vp1, vp2)->vj = vv;
}
static int
@@ -117,7 +114,7 @@ mgt_vcl_cache_vmod(const char *nm, const char *fm, const char *to)
}
static void
-mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val *vv)
+mgt_vcl_import_vmod(struct vclprog *vp, const struct vjsn_val *vv)
{
struct vmodfile *vf;
struct vmoddep *vd;
@@ -126,7 +123,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
const char *v_dst;
CHECK_OBJ_NOTNULL(vp, VCLPROG_MAGIC);
- AN(ip);
AN(vv);
v_name = mgt_vcl_symtab_val(vv, "name");
@@ -142,7 +138,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
REPLACE(vf->fname, v_dst);
AN(vf->fname);
VTAILQ_INIT(&vf->vcls);
- VTAILQ_INIT(&vf->exports);
AZ(mgt_vcl_cache_vmod(v_name, v_file, v_dst));
VTAILQ_INSERT_TAIL(&vmodhead, vf, list);
}
@@ -151,8 +146,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
vd->to = vf;
VTAILQ_INSERT_TAIL(&vp->vmods, vd, lfrom);
VTAILQ_INSERT_TAIL(&vf->vcls, vd, lto);
- ip->vmod = vf;
- VTAILQ_INSERT_TAIL(&vf->exports, ip, to);
}
void
@@ -161,7 +154,6 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
struct vjsn *vj;
struct vjsn_val *v1, *v2;
const char *typ, *err;
- struct import *ip;
CHECK_OBJ_NOTNULL(vp, VCLPROG_MAGIC);
AN(input);
@@ -182,16 +174,11 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
assert(v2->type == VJSN_STRING);
if (strcmp(v2->value, "import"))
continue;
- ALLOC_OBJ(ip, IMPORT_MAGIC);
- AN(ip);
- ip->vj = v1;
- ip->target = vp;
- VTAILQ_INSERT_TAIL(&vp->imports, ip, from);
typ = mgt_vcl_symtab_val(v1, "type");
if (!strcmp(typ, "$VMOD"))
- mgt_vcl_import_vmod(vp, ip, v1);
+ mgt_vcl_import_vmod(vp, v1);
else if (!strcmp(typ, "$VCL"))
- mgt_vcl_import_vcl(vp, ip, v1);
+ mgt_vcl_import_vcl(vp, v1);
else
WRONG("Bad symtab import entry");
}
@@ -200,19 +187,9 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
void
mgt_vcl_symtab_clean(struct vclprog *vp)
{
- struct import *ip;
if (vp->symtab)
vjsn_delete(&vp->symtab);
- while (!VTAILQ_EMPTY(&vp->imports)) {
- ip = VTAILQ_FIRST(&vp->imports);
- VTAILQ_REMOVE(&vp->imports, ip, from);
- if (ip->vmod)
- VTAILQ_REMOVE(&ip->vmod->exports, ip, to);
- if (ip->vcl)
- VTAILQ_REMOVE(&ip->vcl->exports, ip, to);
- FREE_OBJ(ip);
- }
}
/*--------------------------------------------------------------------*/
@@ -251,22 +228,23 @@ void v_matchproto_(cli_func_t)
mcf_vcl_symtab(struct cli *cli, const char * const *av, void *priv)
{
struct vclprog *vp;
- struct import *ip;
+ struct vcldep *vd;
+
(void)av;
(void)priv;
VTAILQ_FOREACH(vp, &vclhead, list) {
VCLI_Out(cli, "VCL: %s\n", vp->name);
- VCLI_Out(cli, " imports:\n");
- VTAILQ_FOREACH(ip, &vp->imports, from) {
- VCLI_Out(cli, " %p -> (%p, %p)\n",
- ip, ip->vcl, ip->vmod);
- mcf_vcl_vjsn_dump(cli, ip->vj, 6);
+ VCLI_Out(cli, " imports from:\n");
+ VTAILQ_FOREACH(vd, &vp->dto, lto) {
+ VCLI_Out(cli, " %s\n", vd->from->name);
+ if (vd->vj)
+ mcf_vcl_vjsn_dump(cli, vd->vj, 6);
}
- VCLI_Out(cli, " exports:\n");
- VTAILQ_FOREACH(ip, &vp->exports, to) {
- VCLI_Out(cli, " %p -> (%p, %p) %s\n",
- ip, ip->vcl, ip->vmod, ip->target->name);
- mcf_vcl_vjsn_dump(cli, ip->vj, 6);
+ VCLI_Out(cli, " exports to:\n");
+ VTAILQ_FOREACH(vd, &vp->dfrom, lfrom) {
+ VCLI_Out(cli, " %s\n", vd->to->name);
+ if (vd->vj)
+ mcf_vcl_vjsn_dump(cli, vd->vj, 6);
}
}
}
diff --git a/bin/varnishd/mgt/mgt_vcl.c b/bin/varnishd/mgt/mgt_vcl.c
index f78d1887f..47b223496 100644
--- a/bin/varnishd/mgt/mgt_vcl.c
+++ b/bin/varnishd/mgt/mgt_vcl.c
@@ -149,7 +149,7 @@ mcf_is_label(const struct vclprog *vp)
/*--------------------------------------------------------------------*/
-void
+struct vcldep *
mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to)
{
struct vcldep *vd;
@@ -169,6 +169,7 @@ mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to)
vd->to = vp_to;
VTAILQ_INSERT_TAIL(&vp_to->dto, vd, lto);
vp_to->nto++;
+ return (vd);
}
static void
@@ -198,11 +199,9 @@ mgt_vcl_add(const char *name, const char *state)
ALLOC_OBJ(vp, VCLPROG_MAGIC);
XXXAN(vp);
REPLACE(vp->name, name);
- VTAILQ_INIT(&vp->exports);
VTAILQ_INIT(&vp->dfrom);
VTAILQ_INIT(&vp->dto);
VTAILQ_INIT(&vp->vmods);
- VTAILQ_INIT(&vp->imports);
vp->state = state;
if (vp->state != VCL_STATE_COLD)
@@ -862,7 +861,7 @@ mcf_vcl_label(struct cli *cli, const char * const *av, void *priv)
AN(vpl);
if (mgt_vcl_requirewarm(cli, vpl))
return;
- mgt_vcl_dep_add(vpl, vpt);
+ (void)mgt_vcl_dep_add(vpl, vpt);
if (!MCH_Running())
return;
diff --git a/bin/varnishd/mgt/mgt_vcl.h b/bin/varnishd/mgt/mgt_vcl.h
index 49adcdf51..1c25c656e 100644
--- a/bin/varnishd/mgt/mgt_vcl.h
+++ b/bin/varnishd/mgt/mgt_vcl.h
@@ -32,17 +32,6 @@ struct vclprog;
struct vmodfile;
struct vjsn_val;
-struct import {
- unsigned magic;
-#define IMPORT_MAGIC 0xce767c9b
- struct vclprog *target;
- VTAILQ_ENTRY(import) from;
- VTAILQ_ENTRY(import) to;
- struct vjsn_val *vj;
- struct vmodfile *vmod;
- struct vclprog *vcl;
-};
-
struct vmoddep {
unsigned magic;
#define VMODDEP_MAGIC 0xc1490542
@@ -58,6 +47,7 @@ struct vcldep {
VTAILQ_ENTRY(vcldep) lfrom;
struct vclprog *to;
VTAILQ_ENTRY(vcldep) lto;
+ const struct vjsn_val *vj;
};
struct vclprog {
@@ -70,8 +60,6 @@ struct vclprog {
const char * state;
double go_cold;
struct vjsn *symtab;
- VTAILQ_HEAD(, import) imports;
- VTAILQ_HEAD(, import) exports;
VTAILQ_HEAD(, vcldep) dfrom;
VTAILQ_HEAD(, vcldep) dto;
int nto;
@@ -83,7 +71,6 @@ struct vmodfile {
unsigned magic;
#define VMODFILE_MAGIC 0xffa1a0d5
char *fname;
- VTAILQ_HEAD(, import) exports;
VTAILQ_ENTRY(vmodfile) list;
VTAILQ_HEAD(, vmoddep) vcls;
};
@@ -92,7 +79,7 @@ extern VTAILQ_HEAD(vclproghead, vclprog) vclhead;
extern VTAILQ_HEAD(vmodfilehead, vmodfile) vmodhead;
struct vclprog *mcf_vcl_byname(const char *name);
-void mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to);
+struct vcldep *mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to);
int mcf_is_label(const struct vclprog *vp);
void mgt_vcl_symtab_clean(struct vclprog *vp);
More information about the varnish-commit
mailing list