diff options
author | 2018-06-27 11:06:49 +0000 | |
---|---|---|
committer | 2018-06-27 11:06:49 +0000 | |
commit | abf87976bcc3ac47e93afe837b1fded0a65d6388 (patch) | |
tree | e865f603f40164ad97576fe774c92c9f98e4b0dd | |
parent | certificate keyword renamed to cert; from raf czlonka (diff) | |
download | wireguard-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.c | 78 |
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 */ -} |