found in the SPOE configuration file. All the file is considered to be in the
same anonymous and implicit scope.
+The engine name must be uniq for a proxy. If no engine name is provided on the
+SPOE filter line, the SPOE agent name is unsed by default.
+
2.2. "spoe-agent" section
--------------------------
/* SPOE filter configuration */
struct spoe_config {
+ char *id; /* The SPOE engine name. If undefined in HAProxy config,
+ * it will be set with the SPOE agent name */
struct proxy *proxy; /* Proxy owning the filter */
struct spoe_agent *agent; /* Agent used by this filter */
struct proxy agent_fe; /* Agent frontend */
struct spoe_agent *agent = conf->agent;
spoe_release_agent(agent);
+ free(conf->id);
free(conf);
}
fconf->conf = NULL;
static int
spoe_check(struct proxy *px, struct flt_conf *fconf)
{
+ struct flt_conf *f;
struct spoe_config *conf = fconf->conf;
struct proxy *target;
+ /* Check all SPOE filters for proxy <px> to be sure all SPOE agent names
+ * are uniq */
+ list_for_each_entry(f, &px->filter_configs, list) {
+ struct spoe_config *c = f->conf;
+
+ /* This is not an SPOE filter */
+ if (f->id != spoe_filter_id)
+ continue;
+ /* This is the current SPOE filter */
+ if (f == fconf)
+ continue;
+
+ /* Check engine Id. It should be uniq */
+ if (!strcmp(conf->id, c->id)) {
+ Alert("Proxy %s : duplicated name for SPOE engine '%s'.\n",
+ px->id, conf->id);
+ return 1;
+ }
+ }
+
target = proxy_be_by_name(conf->agent->b.name);
if (target == NULL) {
Alert("Proxy %s : unknown backend '%s' used by SPOE agent '%s'"
}
finish:
+ conf->id = strdup(engine ? engine : curagent->id);
conf->agent = curagent;
list_for_each_entry_safe(mp, mpback, &curmps, list) {
LIST_DEL(&mp->list);