ARM crosscompiler fixes
[olsrd.git] / src / net.c
index 1fcd9cc..0e6c129 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net.c,v 1.14 2004/09/25 21:06:07 kattemat Exp $
+ * $Id: net.c,v 1.17 2004/10/20 19:43:04 kattemat Exp $
  *
  */
 
  *
  */
 
@@ -149,7 +149,7 @@ net_outbuffer_push(struct interface *ifp, olsr_u8_t *data, olsr_u16_t size)
   memcpy(&netbufs[ifp->if_nr]->buff[netbufs[ifp->if_nr]->pending + OLSR_HEADERSIZE], data, size);
   netbufs[ifp->if_nr]->pending += size;
 
   memcpy(&netbufs[ifp->if_nr]->buff[netbufs[ifp->if_nr]->pending + OLSR_HEADERSIZE], data, size);
   netbufs[ifp->if_nr]->pending += size;
 
-  return 1;
+  return size;
 }
 
 
 }
 
 
@@ -171,7 +171,7 @@ net_outbuffer_push_reserved(struct interface *ifp, olsr_u8_t *data, olsr_u16_t s
   memcpy(&netbufs[ifp->if_nr]->buff[netbufs[ifp->if_nr]->pending + OLSR_HEADERSIZE], data, size);
   netbufs[ifp->if_nr]->pending += size;
 
   memcpy(&netbufs[ifp->if_nr]->buff[netbufs[ifp->if_nr]->pending + OLSR_HEADERSIZE], data, size);
   netbufs[ifp->if_nr]->pending += size;
 
-  return 1;
+  return size;
 }
 
 
 }
 
 
@@ -223,7 +223,7 @@ net_output(struct interface *ifp)
   /* Set the packetlength */
   outmsg->v4.olsr_packlen = htons(netbufs[ifp->if_nr]->pending);
 
   /* Set the packetlength */
   outmsg->v4.olsr_packlen = htons(netbufs[ifp->if_nr]->pending);
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       sin = (struct sockaddr_in *)&ifp->int_broadaddr;
     {
       /* IP version 4 */
       sin = (struct sockaddr_in *)&ifp->int_broadaddr;
@@ -232,10 +232,6 @@ net_output(struct interface *ifp)
       dst = *sin;
       sin = &dst;
 
       dst = *sin;
       sin = &dst;
 
-      /* Set user defined broadcastaddr */
-      if(bcast_set)
-       memcpy(&dst.sin_addr.s_addr, &bcastaddr.sin_addr, sizeof(olsr_u32_t));
-
       if (sin->sin_port == 0)
        sin->sin_port = olsr_udp_port;
     }
       if (sin->sin_port == 0)
        sin->sin_port = olsr_udp_port;
     }
@@ -272,7 +268,7 @@ net_output(struct interface *ifp)
        case(HNA_MESSAGE):printf("\n\tHNA ");break;
        default:printf("\n\tTYPE: %d ", netbufs[ifp->if_nr]->buff[4]); break;
        }
        case(HNA_MESSAGE):printf("\n\tHNA ");break;
        default:printf("\n\tTYPE: %d ", netbufs[ifp->if_nr]->buff[4]); break;
        }
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        printf("to %s size: %d\n\t", ip_to_string((olsr_u32_t *)&sin->sin_addr.s_addr), netbufs[ifp->if_nr]->pending);
       else
        printf("to %s size: %d\n\t", ip6_to_string(&sin6->sin6_addr), netbufs[ifp->if_nr]->pending);
        printf("to %s size: %d\n\t", ip_to_string((olsr_u32_t *)&sin->sin_addr.s_addr), netbufs[ifp->if_nr]->pending);
       else
        printf("to %s size: %d\n\t", ip6_to_string(&sin6->sin6_addr), netbufs[ifp->if_nr]->pending);
@@ -287,7 +283,7 @@ net_output(struct interface *ifp)
              printf("\n\t");
            }
          x++;
              printf("\n\t");
            }
          x++;
-         if(ipversion == AF_INET)
+         if(olsr_cnf->ip_version == AF_INET)
            printf(" %3i", (u_char) netbufs[ifp->if_nr]->buff[i]);
          else
            printf(" %2x", (u_char) netbufs[ifp->if_nr]->buff[i]);
            printf(" %3i", (u_char) netbufs[ifp->if_nr]->buff[i]);
          else
            printf(" %2x", (u_char) netbufs[ifp->if_nr]->buff[i]);
@@ -301,7 +297,7 @@ net_output(struct interface *ifp)
    *used when building packets.
    */
   
    *used when building packets.
    */
   
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       /* IP version 4 */
       if(sendto(ifp->olsr_socket, 
     {
       /* IP version 4 */
       if(sendto(ifp->olsr_socket, 
@@ -427,7 +423,8 @@ join_mcast(struct interface *ifs, int sock)
       return -1;
     }
 
       return -1;
     }
 
-
+  /* Old libc fix */
+#ifdef IPV6_JOIN_GROUP
   /* Join reciever group */
   if(setsockopt(sock, 
                IPPROTO_IPV6, 
   /* Join reciever group */
   if(setsockopt(sock, 
                IPPROTO_IPV6, 
@@ -435,6 +432,15 @@ join_mcast(struct interface *ifs, int sock)
                (char *)&mcastreq, 
                sizeof(struct ipv6_mreq)) 
      < 0)
                (char *)&mcastreq, 
                sizeof(struct ipv6_mreq)) 
      < 0)
+#else
+  /* Join reciever group */
+  if(setsockopt(sock, 
+               IPPROTO_IPV6, 
+               IPV6_ADD_MEMBERSHIP, 
+               (char *)&mcastreq, 
+               sizeof(struct ipv6_mreq)) 
+     < 0)
+#endif 
     {
       perror("Join multicast send");
       return -1;
     {
       perror("Join multicast send");
       return -1;
@@ -595,7 +601,7 @@ olsr_ip_to_string(union olsr_ip_addr *addr)
   char *ret;
   struct in_addr in;
   
   char *ret;
   struct in_addr in;
   
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       in.s_addr=addr->v4;
       ret = inet_ntoa(in);
     {
       in.s_addr=addr->v4;
       ret = inet_ntoa(in);