From e003275f092bdbe8b64b3da301886d5e02218d6e Mon Sep 17 00:00:00 2001
From: Kozlov Dmitry <xeb@mail.ru>
Date: Fri, 19 Apr 2013 12:00:34 +0400
Subject: ipoe: fix local-net handling

---
 accel-pppd/ctrl/ipoe/ipoe.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'accel-pppd/ctrl/ipoe')

diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c
index 214f93a9..aae1cd10 100644
--- a/accel-pppd/ctrl/ipoe/ipoe.c
+++ b/accel-pppd/ctrl/ipoe/ipoe.c
@@ -1627,7 +1627,12 @@ static void parse_local_net(const char *opt)
 	if (mask == 32)
 		mask = 0xffffffff;
 	else
-		mask = (1 << mask) - 1;
+		mask = (1 << (32-mask)) - 1;
+
+	addr = ntohl(addr);
+	mask = ~mask;
+
+	//printf("%x/%x %x\n", htonl(addr), ~mask, htonl(addr)&(~mask));
 
 	ipoe_nl_add_net(addr & mask, mask);
 
-- 
cgit v1.2.3