>From 2501e258afd9f2b5bbf55d0de4f4c579a0fa7a47 Mon Sep 17 00:00:00 2001
From: Sam Hartman <hartmans@debian.org>
Date: Thu, 10 Jul 2014 09:42:18 -0400
Subject: [PATCH 2/2] fr_inaddr_mask fix 0 prefix

Don't depend on the behavior of shifting by 32-bits on a 32-bit type.
---
 src/lib/misc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/misc.c b/src/lib/misc.c
index 84d1624..af0616c 100644
--- a/src/lib/misc.c
+++ b/src/lib/misc.c
@@ -961,7 +961,9 @@ struct in_addr fr_inaddr_mask(struct in_addr const *ipaddr, uint8_t prefix)
 		return *ipaddr;
 	}
 
-	ret = htonl(~((0x00000001UL << (32 - prefix)) - 1)) & ipaddr->s_addr;
+	if (prefix == 0)
+		ret = 0;
+	else ret = htonl(~((0x00000001UL << (32 - prefix)) - 1)) & ipaddr->s_addr;
 	return (*(struct in_addr *)&ret);
 }
 
-- 
2.0.0.rc2

