Commit 02c1fbdd authored by Martin Mareš's avatar Martin Mareš

Added proto_get_named() to be used in CLI commands to get protocol instance

of a given protocol with optionally given name. See `show static' for an
example.
parent 28e01f85
......@@ -499,3 +499,32 @@ proto_show(struct symbol *s, int verbose)
}
cli_msg(0, "");
}
struct proto *
proto_get_named(struct symbol *sym, struct protocol *pr)
{
struct proto *p, *q;
if (sym)
{
if (sym->class != SYM_PROTO)
cf_error("%s: Not a protocol", sym->name);
p = ((struct proto_config *)sym->def)->proto;
if (!p || p->proto != pr)
cf_error("%s: Not a %s protocol", sym->name, pr->name);
}
else
{
p = NULL;
WALK_LIST(q, proto_list)
if (q->proto == pr)
{
if (p)
cf_error("There are multiple %s protocols running", pr->name);
p = q;
}
if (!p)
cf_error("There is no %s protocol running", pr->name);
}
return p;
}
......@@ -151,6 +151,7 @@ void proto_build(struct proto_config *);
void *proto_new(struct proto_config *, unsigned size);
void *proto_config_new(struct protocol *, unsigned size);
void proto_show(struct symbol *, int);
struct proto *proto_get_named(struct symbol *, struct protocol *);
extern list proto_list;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment