On Sat, Nov 29, 2008 at 10:14 PM, Markus Kittenberger <span dir="ltr"><<a href="mailto:Markus.Kittenberger@gmx.at">Markus.Kittenberger@gmx.at</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<p>i ended in ipcalc.c </p><p>121 if(olsr_cnf->ip_version == AF_INET) {<br>122      uint32_t netmask = ntohl(~0 << (32 - net->prefix_len));<br>123      rv = (ipaddr->v4.s_addr & netmask) == (net->prefix.v4.s_addr & netmask);<br>

124   }</p></blockquote><div>as you can`t shift a 32 bit wide type by 32 (which is of no big usage anyway (-;)</div><div>.</div><div>e.g. if you code like following you end in an compiler warning </div><div>.</div><div>netmask = netmask << 32;</div>
<div>.</div><div>warning: left shift count >= width of type</div><div>.</div><div>therefore a patch like following is really required for ipcalc.c</div><div>.</div><div>--- ../../olsrd-54b2ca51a0b1/src/ipcalc.c       2008-11-28 10:00:21.000000000 +0100<br>
+++ ipcalc.c    2008-11-30 03:30:09.000000000 +0100<br>@@ -119,8 +119,12 @@<br> {<br>   int rv;<br>   if(olsr_cnf->ip_version == AF_INET) {<br>-    uint32_t netmask = ntohl(~0 << (32 - net->prefix_len));<br>-    rv = (ipaddr->v4.s_addr & netmask) == (net->prefix.v4.s_addr & netmask);<br>
+    if (net->prefix_len < 1) {<br>+      rv = true;<br>+    } else {<br>+      uint32_t netmask = ~0 << (32 - net->prefix_len);<br>+      rv = (ipaddr->v4.s_addr & netmask) == (net->prefix.v4.s_addr & netmask);<br>
+    }<br>   } else {<br>     /* IPv6 */<br>     uint32_t netmask;</div><div>.<br></div><div>.</div><div>Markus</div><div><br><br> </div>