Commit 53241e2b authored by Tycho Andersen's avatar Tycho Andersen Committed by Pavel Emelyanov

external: add a new "data" option to external

We'll use this in the next patch to find the ifindex for a macvlan bridge
in the host's net ns.

travis-ci: success for series starting with [v10,01/11] net: pass the struct nlattrs to dump() functions
Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent d3f3d50d
...@@ -27,6 +27,21 @@ bool external_lookup_id(char *id) ...@@ -27,6 +27,21 @@ bool external_lookup_id(char *id)
return false; return false;
} }
void *external_lookup_data(char *key)
{
struct external *ext;
int len = strlen(key);
list_for_each_entry(ext, &opts.external, node) {
if (strncmp(ext->id, key, len))
continue;
return ext->data;
}
return ERR_PTR(-ENOENT);
}
char *external_lookup_by_key(char *key) char *external_lookup_by_key(char *key)
{ {
struct external *ext; struct external *ext;
......
...@@ -3,11 +3,13 @@ ...@@ -3,11 +3,13 @@
struct external { struct external {
struct list_head node; struct list_head node;
char *id; char *id;
void *data;
}; };
extern int add_external(char *key); extern int add_external(char *key);
extern bool external_lookup_id(char *id); extern bool external_lookup_id(char *id);
extern char *external_lookup_by_key(char *id); extern char *external_lookup_by_key(char *id);
extern void *external_lookup_data(char *id);
extern int external_for_each_type(char *type, int (*cb)(struct external *, void *), void *arg); extern int external_for_each_type(char *type, int (*cb)(struct external *, void *), void *arg);
static inline char *external_val(struct external *e) static inline char *external_val(struct external *e)
......
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