Fixed a bug about the size of the OBAMP data messages
authorHenning Rogge <hrogge@googlemail.com>
Sat, 10 Oct 2009 13:04:45 +0000 (15:04 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Sat, 10 Oct 2009 13:04:45 +0000 (15:04 +0200)
backport from tiptip, author Saverio Proto <zioproto@gmail.com>

lib/obamp/src/obamp.c
lib/obamp/src/obamp.h

index b9f101a..c7b0fbf 100644 (file)
@@ -139,7 +139,6 @@ static int
 SendOBAMPData(struct in_addr *addr, unsigned char *ipPacket, int nBytes)
 {
 
-  int b=0;
   struct sockaddr_in si_other;
   struct OBAMP_data_message4 *data_msg;
   data_msg = malloc(sizeof(struct OBAMP_data_message4));
@@ -168,12 +167,8 @@ SendOBAMPData(struct in_addr *addr, unsigned char *ipPacket, int nBytes)
   si_other.sin_port = htons(OBAMP_SIGNALLING_PORT);
   si_other.sin_addr = *addr;
   //sendto(sdudp, data_msg, sizeof(struct OBAMP_data_message), 0, (struct sockaddr *)&si_other, sizeof(si_other));
-  //TODO: this 15 magic number is okay only for IPv4, we do not worry about this now
-  b = sendto(sdudp, data_msg, 6+15+data_msg->datalen, 0, (struct sockaddr *)&si_other, sizeof(si_other));
-
-
-  OLSR_DEBUG(LOG_PLUGINS, "SENT %d bytes 21 + %d",b,data_msg->datalen);
-  if (b < 6+15+data_msg->datalen) OLSR_DEBUG(LOG_PLUGINS, "SEND ERROR SENT %d INSTEAD OF %d",b,6+15+data_msg->datalen);
+  //TODO: this 17 magic number is okay only for IPv4, we do not worry about this now
+  sendto(sdudp, data_msg, 17+data_msg->datalen, 0, (struct sockaddr *)&si_other, sizeof(si_other));
   free(data_msg);
   return 0;
 
@@ -833,7 +828,7 @@ forward_obamp_data(char *buffer)
         si_other.sin_port = htons(OBAMP_SIGNALLING_PORT);
         si_other.sin_addr = tmp->neighbor_ip_addr.v4;
         //sendto(sdudp, data_msg, sizeof(struct OBAMP_data_message), 0, (struct sockaddr *)&si_other, sizeof(si_other));
-       sendto(sdudp, data_msg, 6+15+data_msg->datalen, 0, (struct sockaddr *)&si_other, sizeof(si_other));
+       sendto(sdudp, data_msg, 17+data_msg->datalen, 0, (struct sockaddr *)&si_other, sizeof(si_other));
 
         OLSR_DEBUG(LOG_PLUGINS, "FORWARDING OBAMP DATA TO node %s ", ip4_to_string(&buf, tmp->neighbor_ip_addr.v4));
 
index 0dcb4e3..172ecb4 100644 (file)
@@ -192,7 +192,7 @@ struct OBAMP_data_message4 {
   u_int16_t datalen;
   unsigned char data[1471];            //Considering 1492 MTU
 
-};
+} __attribute__((__packed__));
 
 struct OBAMP_data_message6 {