Fix endian bug in --local-service code.
diff --git a/CHANGELOG b/CHANGELOG
index 1146413..a499107 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -49,6 +49,9 @@
 	    regression introduced in 2.69. Thanks to James Hunt and
 	    the Ubuntu crowd for assistance in fixing this.
 
+	    Fix problem with --local-service option on big-endian platforms
+	    Thanks to Richard Genoud for the patch.
+
 
 version 2.70
             Fix crash, introduced in 2.69, on TCP request when dnsmasq
diff --git a/src/forward.c b/src/forward.c
index 3afd1b1..4895efe 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -1118,7 +1118,7 @@
 	  struct in_addr netmask;
 	  for (addr = daemon->interface_addrs; addr; addr = addr->next)
 	    {
-	      netmask.s_addr = 0xffffffff << (32 - addr->prefixlen);
+	      netmask.s_addr = htonl(~(in_addr_t)0 << (32 - addr->prefixlen));
 	      if (!(addr->flags & ADDRLIST_IPV6) &&
 		  is_same_net(addr->addr.addr.addr4, source_addr.in.sin_addr, netmask))
 		break;
@@ -1652,7 +1652,7 @@
 	  struct in_addr netmask;
 	  for (addr = daemon->interface_addrs; addr; addr = addr->next)
 	    {
-	      netmask.s_addr = 0xffffffff << (32 - addr->prefixlen);
+	      netmask.s_addr = htonl(~(in_addr_t)0 << (32 - addr->prefixlen));
 	      if (!(addr->flags & ADDRLIST_IPV6) && 
 		  is_same_net(addr->addr.addr.addr4, peer_addr.in.sin_addr, netmask))
 		break;