summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2023-02-06 15:24:56 +0200
committerGitHub <noreply@github.com>2023-02-06 15:24:56 +0200
commitd83c36ee44f54d01598e8f120a05e407b8b87312 (patch)
tree848590be4e9b5424c423cec0ace862e53e67ee9d
parent51c48bdefdaabe957b9eac462e19593df8de51a4 (diff)
parent0f9650ca955d4c9a5c3d9de72a9306cb429079f2 (diff)
Merge pull request #12740 from vfreex/babel-fix-filtering
babeld: Fix filtering against all interfaces
-rw-r--r--babeld/babel_filter.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/babeld/babel_filter.c b/babeld/babel_filter.c
index 731ad1ba8b..f49fee8dae 100644
--- a/babeld/babel_filter.c
+++ b/babeld/babel_filter.c
@@ -44,15 +44,18 @@ babel_filter(int output, const unsigned char *prefix, unsigned short plen,
struct prefix_list *plist;
int distribute;
struct babel *babel;
+ afi_t family;
p.family = v4mapped(prefix) ? AF_INET : AF_INET6;
p.prefixlen = v4mapped(prefix) ? plen - 96 : plen;
if (p.family == AF_INET) {
uchar_to_inaddr(&p.u.prefix4, prefix);
distribute = output ? DISTRIBUTE_V4_OUT : DISTRIBUTE_V4_IN;
+ family = AFI_IP;
} else {
uchar_to_in6addr(&p.u.prefix6, prefix);
distribute = output ? DISTRIBUTE_V6_OUT : DISTRIBUTE_V6_IN;
+ family = AFI_IP6;
}
if (babel_ifp != NULL && babel_ifp->list[distribute]) {
@@ -79,7 +82,7 @@ babel_filter(int output, const unsigned char *prefix, unsigned short plen,
dist = distribute_lookup (babel->distribute_ctx, NULL);
if (dist) {
if (dist->list[distribute]) {
- alist = access_list_lookup (p.family, dist->list[distribute]);
+ alist = access_list_lookup (family, dist->list[distribute]);
if (alist) {
if (access_list_apply (alist, &p) == FILTER_DENY) {
@@ -90,7 +93,7 @@ babel_filter(int output, const unsigned char *prefix, unsigned short plen,
}
}
if (dist->prefix[distribute]) {
- plist = prefix_list_lookup (p.family, dist->prefix[distribute]);
+ plist = prefix_list_lookup (family, dist->prefix[distribute]);
if (plist) {
if (prefix_list_apply (plist, &p) == PREFIX_DENY) {
debugf(BABEL_DEBUG_FILTER,"%pFX filtered by distribute %s",