summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Jakma <paul@quagga.net>2010-01-24 21:41:02 +0000
committerDenis Ovsienko <infrastation@yandex.ru>2011-08-01 15:28:24 +0400
commite9e42170c63efcdb14b9389f481f2fa8fcb4092a (patch)
tree200a24e16e20ecdf6e1b614d8d62436e52bcc6f5
parenta8b79422aadf5dc821af6699e468379002cc61f9 (diff)
lib: prefix.c nano-optimisation
* lib/prefix.c: (prefix_match) nano-optimisation, let it return early without copying pointers.
-rw-r--r--lib/prefix.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/prefix.c b/lib/prefix.c
index 7dc866d1..61a278ca 100644
--- a/lib/prefix.c
+++ b/lib/prefix.c
@@ -70,15 +70,16 @@ prefix_match (const struct prefix *n, const struct prefix *p)
{
int offset;
int shift;
-
- /* Set both prefix's head pointer. */
- const u_char *np = (const u_char *)&n->u.prefix;
- const u_char *pp = (const u_char *)&p->u.prefix;
+ const u_char *np, *pp;
/* If n's prefix is longer than p's one return 0. */
if (n->prefixlen > p->prefixlen)
return 0;
+ /* Set both prefix's head pointer. */
+ np = (const u_char *)&n->u.prefix;
+ pp = (const u_char *)&p->u.prefix;
+
offset = n->prefixlen / PNBBY;
shift = n->prefixlen % PNBBY;