Replace two other buffers with 4-byte aligned arrays
authorHenning Rogge <hrogge@googlemail.com>
Mon, 23 Mar 2009 17:29:43 +0000 (18:29 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Mon, 23 Mar 2009 17:29:43 +0000 (18:29 +0100)
src/build_msg.c
src/lq_packet.c
src/parser.c

index b3f6ff5..c838048 100644 (file)
@@ -64,7 +64,8 @@ static void check_buffspace(int msgsize, int buffsize, const char *type);
 
 /* All these functions share this buffer */
 
-static uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+static uint32_t msg_buffer_align[(MAXMESSAGESIZE - OLSR_HEADERSIZE)/sizeof(uint32_t) + 1];
+static uint8_t *msg_buffer = (uint8_t *)msg_buffer_align;
 
 static clock_t send_empty_tc;          /* TC empty message sending */
 
index a3fbac5..29fae16 100644 (file)
@@ -61,7 +61,8 @@
 
 bool lq_tc_pending = false;
 
-static unsigned char msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+static uint32_t msg_buffer_aligned[(MAXMESSAGESIZE - OLSR_HEADERSIZE) / sizeof(uint32_t) + 1];
+static unsigned char *msg_buffer = (unsigned char *)msg_buffer_aligned;
 
 static void
 create_lq_hello(struct lq_hello_message *lq_hello, struct interface *outif)
index 8260fa5..a3d9e9a 100644 (file)
@@ -396,7 +396,7 @@ olsr_input(int fd)
     }
 
     fromlen = sizeof(struct sockaddr_storage);
-    cc = olsr_recvfrom(fd, inbuf, sizeof(inbuf), 0, (struct sockaddr *)&from, &fromlen);
+    cc = olsr_recvfrom(fd, inbuf, sizeof(inbuf_aligned), 0, (struct sockaddr *)&from, &fromlen);
 
     if (cc <= 0) {
       if (cc < 0 && errno != EWOULDBLOCK) {