Fixed bug in Prefix which caused some updates not to be added to the PTrie, and reverted ProxyArp to broadcasting every received request
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
index 1b55cd6..c36d4a5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
@@ -494,12 +494,19 @@
 	
 	@Override
 	public void newRibUpdate(RibUpdate update) {
-		ribUpdates.add(update);
+		try {
+			ribUpdates.put(update);
+		} catch (InterruptedException e) {
+			// TODO Auto-generated catch block
+			log.debug(" ", e);
+		}
 	}
 	
 	public synchronized void processRibAdd(RibUpdate update) {
 		Prefix prefix = update.getPrefix();
 		
+		log.debug("Processing prefix add {}", prefix);
+		
 		//PtreeNode node = ptree.acquire(prefix.getAddress(), prefix.getPrefixLength());
 		RibEntry rib = ptree.put(prefix, update.getRibEntry());
 		
@@ -1165,6 +1172,7 @@
 						break;
 					}
 				} catch (InterruptedException e) {
+					log.debug("interrupted", e);
 					interrupted = true;
 				}
 			}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
index c40214b..21dd45c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
@@ -73,13 +73,12 @@
 		
 		byte lastByte = address[lastByteIndex];
 		byte mask = 0;
-		byte lsb = 1;
+		byte msb = (byte) 0x80;
 		int lastBit = (prefixLength - 1) % Byte.SIZE;
 		for (int i = 0; i < Byte.SIZE; i++) {
-			if (i <= lastBit + 1) {
-				mask |= lsb;
+			if (i <= lastBit) {
+				mask |= (msb >> i);
 			}
-			mask <<= 1;
 		}
 
 		result[lastByteIndex] = (byte) (lastByte & mask);