X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=polypath.c;h=64284a30fa17f29225f4a5273b91853db03f5d1a;hb=4d9d6e20e19c1aaa0d138e70897d136b36d673c0;hp=1d73a0a5d59c8eed5ad7f00c69e3117ab723ec75;hpb=03cbfbd2fa5783bd57aa379c08e90312149023cf;p=secnet.git diff --git a/polypath.c b/polypath.c index 1d73a0a..64284a3 100644 --- a/polypath.c +++ b/polypath.c @@ -7,7 +7,7 @@ * * secnet is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version d of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * secnet is distributed in the hope that it will be useful, but @@ -27,6 +27,7 @@ #include #include +#include #ifdef CONFIG_IPV6 @@ -98,7 +99,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 +352,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); } @@ -516,7 +517,7 @@ static void polypath_sendmsg_interf(struct polypath *st, "%s has no suitable address to transmit %s", interf->name, af_name(af)); - *allreasonable *= reasonable; + *allreasonable &= reasonable; } static bool_t polypath_sendmsg(void *commst, struct buffer_if *buf,