summaryrefslogtreecommitdiffstats
path: root/nest/iface.c
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2010-03-19 18:46:56 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2010-03-19 18:46:56 +0100
commit5d53b80770b4927b5a8205ee0e57f80454b0abf5 (patch)
tree416fba8870025e456be35ba0cd980dff6345c1a1 /nest/iface.c
parent0aad2b9292f8e5ff32d048378faf80d2d0bfbb80 (diff)
downloadbird-5d53b80770b4927b5a8205ee0e57f80454b0abf5.tar
bird-5d53b80770b4927b5a8205ee0e57f80454b0abf5.zip
Allow iface pattern matching code to match peer address on ptp links.
Diffstat (limited to 'nest/iface.c')
-rw-r--r--nest/iface.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/nest/iface.c b/nest/iface.c
index a80e973..4d0cf04 100644
--- a/nest/iface.c
+++ b/nest/iface.c
@@ -588,12 +588,20 @@ iface_patt_match(struct iface_patt *ifp, struct iface *i, struct ifa *a)
continue;
}
- // FIXME there should be check for prefix in prefix. (?)
- if (p->pxlen)
- if (!a || !ipa_in_net(a->ip, p->prefix, p->pxlen))
- continue;
+ if (p->pxlen == 0)
+ return pos;
- return pos;
+ if (!a)
+ continue;
+
+ if (ipa_in_net(a->ip, p->prefix, p->pxlen))
+ return pos;
+
+ if ((a->flags & IA_UNNUMBERED) &&
+ ipa_in_net(a->opposite, p->prefix, p->pxlen))
+ return pos;
+
+ continue;
}
return 0;