X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/03cbfbd2fa5783bd57aa379c08e90312149023cf..1fc8a4acb3ef658696038c9c4bd3c155fbc27ac3:/polypath.c diff --git a/polypath.c b/polypath.c index 1d73a0a..025909a 100644 --- a/polypath.c +++ b/polypath.c @@ -98,7 +98,7 @@ static bool_t ifname_search_pats(struct polypath *st, struct cloc loc, const char *const *pati; for (pati=pats; *pati; pati++) { const char *pat=*pati; - if (*pat=='!' || *pat=='+') { *want_io=*pat; pat++; } + if (*pat=='!' || *pat=='+' || *pat=='@') { *want_io=*pat; pat++; } else if (*pat=='*' || isalnum((unsigned char)*pat)) { *want_io='+'; } else cfgfatal(loc,"polypath","invalid interface name pattern `%s'",pat); int match=fnmatch(pat,ifname,0); @@ -351,8 +351,8 @@ static void polypath_record_ifaddr(struct polypath *st, struct interf_list *interfs; switch (want) { - case '+': interfs=&st->interfs_general; max_interfs=st->max_interfs; - case '@': interfs=&st->interfs_dedicated; max_interfs=INT_MAX; + case '+': interfs=&st->interfs_general; max_interfs=st->max_interfs; break; + case '@': interfs=&st->interfs_dedicated; max_interfs=INT_MAX; break; default: fatal("polypath: got bad want (%#x, %s)", want, ifname); }