summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2018-06-27 11:06:49 +0000
committerclaudio <claudio@openbsd.org>2018-06-27 11:06:49 +0000
commitabf87976bcc3ac47e93afe837b1fded0a65d6388 (patch)
treee865f603f40164ad97576fe774c92c9f98e4b0dd
parentcertificate keyword renamed to cert; from raf czlonka (diff)
downloadwireguard-openbsd-abf87976bcc3ac47e93afe837b1fded0a65d6388.tar.xz
wireguard-openbsd-abf87976bcc3ac47e93afe837b1fded0a65d6388.zip
Move rde_test_prefix() to a place where it makes more sense. No functional
change.
-rw-r--r--usr.sbin/bgpd/rde_filter.c78
1 files changed, 39 insertions, 39 deletions
diff --git a/usr.sbin/bgpd/rde_filter.c b/usr.sbin/bgpd/rde_filter.c
index 4766685e2ac..dfd4f420a85 100644
--- a/usr.sbin/bgpd/rde_filter.c
+++ b/usr.sbin/bgpd/rde_filter.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde_filter.c,v 1.89 2018/06/25 14:28:33 claudio Exp $ */
+/* $OpenBSD: rde_filter.c,v 1.90 2018/06/27 11:06:49 claudio Exp $ */
/*
* Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org>
@@ -496,6 +496,44 @@ rde_filter_match(struct filter_rule *f, struct rde_aspath *asp,
return (1);
}
+/* return 1 when prefix matches filter_prefix, 0 if not */
+int
+rde_test_prefix(struct filter_prefix *fp, struct bgpd_addr *prefix,
+ u_int8_t plen)
+{
+ if (fp->addr.aid != prefix->aid)
+ /* don't use IPv4 rules for IPv6 and vice versa */
+ return (0);
+
+ if (prefix_compare(prefix, &fp->addr, fp->len))
+ return (0);
+
+ /* test prefixlen stuff too */
+ switch (fp->op) {
+ case OP_NONE: /* perfect match */
+ return (plen == fp->len);
+ case OP_EQ:
+ return (plen == fp->len_min);
+ case OP_NE:
+ return (plen != fp->len_min);
+ case OP_RANGE:
+ return ((plen >= fp->len_min) &&
+ (plen <= fp->len_max));
+ case OP_XRANGE:
+ return ((plen < fp->len_min) ||
+ (plen > fp->len_max));
+ case OP_LE:
+ return (plen <= fp->len_min);
+ case OP_LT:
+ return (plen < fp->len_min);
+ case OP_GE:
+ return (plen >= fp->len_min);
+ case OP_GT:
+ return (plen > fp->len_min);
+ }
+ return (0); /* should not be reached */
+}
+
int
rde_filter_equal(struct filter_head *a, struct filter_head *b,
struct rde_peer *peer, struct prefixset_head *psh)
@@ -993,41 +1031,3 @@ rde_filter(struct filter_head *rules, struct rde_aspath **new,
}
return (action);
}
-
-/* return 1 when prefix matches filter_prefix, 0 if not */
-int
-rde_test_prefix(struct filter_prefix *fp, struct bgpd_addr *prefix,
- u_int8_t plen)
-{
- if (fp->addr.aid != prefix->aid)
- /* don't use IPv4 rules for IPv6 and vice versa */
- return (0);
-
- if (prefix_compare(prefix, &fp->addr, fp->len))
- return (0);
-
- /* test prefixlen stuff too */
- switch (fp->op) {
- case OP_NONE: /* perfect match */
- return (plen == fp->len);
- case OP_EQ:
- return (plen == fp->len_min);
- case OP_NE:
- return (plen != fp->len_min);
- case OP_RANGE:
- return ((plen >= fp->len_min) &&
- (plen <= fp->len_max));
- case OP_XRANGE:
- return ((plen < fp->len_min) ||
- (plen > fp->len_max));
- case OP_LE:
- return (plen <= fp->len_min);
- case OP_LT:
- return (plen < fp->len_min);
- case OP_GE:
- return (plen >= fp->len_min);
- case OP_GT:
- return (plen > fp->len_min);
- }
- return (0); /* should not be reached */
-}