Remove non-lq data structures
authorHenning Rogge <rogge@fgan.de>
Sat, 13 Dec 2008 12:30:33 +0000 (13:30 +0100)
committerHenning Rogge <rogge@fgan.de>
Sat, 13 Dec 2008 12:30:33 +0000 (13:30 +0100)
17 files changed:
src/build_msg.c
src/build_msg.h
src/generate_msg.c
src/link_set.c
src/link_set.h
src/lq_packet.c
src/lq_packet.h
src/lq_plugin.c
src/lq_plugin.h
src/lq_plugin_default_ff.c
src/lq_plugin_default_float.c
src/lq_plugin_default_fpm.c
src/packet.c [deleted file]
src/packet.h [deleted file]
src/parser.h
src/process_package.c
src/tc_set.h

index 695339d..1f0f763 100644 (file)
@@ -73,12 +73,6 @@ static uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
 /* IPv4 */
 
 static bool
-serialize_hello4(struct hello_message *, struct interface *);
-
-static bool
-serialize_tc4(struct tc_message *, struct interface *);
-
-static bool
 serialize_mid4(struct interface *);
 
 static bool
@@ -87,82 +81,12 @@ serialize_hna4(struct interface *);
 /* IPv6 */
 
 static bool
-serialize_hello6(struct hello_message *, struct interface *);
-
-static bool
-serialize_tc6(struct tc_message *, struct interface *);
-
-static bool
 serialize_mid6(struct interface *);
 
 static bool
 serialize_hna6(struct interface *);
 
 /**
- * Generate HELLO packet with the contents of the parameter "message".
- * If this won't fit in one packet, chop it up into several.
- * Send the packet if the size of the data contained in the output buffer
- * reach maxmessagesize. Can generate an empty HELLO packet if the
- * neighbor table is empty.
- *
- *
- *@param message the hello_message struct containing the info
- *to build the hello message from.
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-bool
-queue_hello(struct hello_message *message, struct interface *ifp)
-{
-#ifdef DEBUG
-  OLSR_PRINTF(BMSG_DBGLVL, "Building HELLO on %s\n-------------------\n", ifp->int_name);
-#endif
-
-  switch(olsr_cnf->ip_version)
-    {
-    case(AF_INET):
-      return serialize_hello4(message, ifp);
-    case(AF_INET6):
-      return serialize_hello6(message, ifp);
-    }
-  return false;
-}
-
-
-/*
- * Generate TC packet with the contents of the parameter "message".
- * If this won't fit in one packet, chop it up into several.
- * Send the packet if the size of the data contained in the output buffer
- * reach maxmessagesize.
- *
- *@param message the tc_message struct containing the info
- *to send
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-bool
-queue_tc(struct tc_message *message, struct interface *ifp)
-{
-#ifdef DEBUG
-  OLSR_PRINTF(BMSG_DBGLVL, "Building TC on %s\n-------------------\n", ifp->int_name);
-#endif
-
-  switch(olsr_cnf->ip_version)
-    {
-    case(AF_INET):
-      return serialize_tc4(message, ifp);
-    case(AF_INET6):
-      return serialize_tc6(message, ifp);
-    }
-  return false;
-}
-
-
-/**
  *Build a MID message to the outputbuffer
  *
  *<b>NO INTERNAL BUFFER</b>
@@ -228,569 +152,6 @@ check_buffspace(int msgsize, int buffsize, const char *type)
     }
 }
 
-
-/**
- * IP version 4
- *
- *@param message the hello_message struct containing the info
- *to build the hello message from.
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-static bool
-serialize_hello4(struct hello_message *message, struct interface *ifp)
-{
-  uint16_t remainsize, curr_size;
-  struct hello_neighbor *nb;
-  union olsr_message *m;
-  struct hellomsg *h;
-  struct hellinfo *hinfo;
-  union olsr_ip_addr *haddr;
-  int i, j;
-  bool first_entry;
-
-  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET))
-    return false;
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-
-  m = (union olsr_message *)msg_buffer;
-
-  curr_size = OLSR_HELLO_IPV4_HDRSIZE;
-
-  /* Send pending packet if not room in buffer */
-  if(curr_size > remainsize)
-    {
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-    }
-  /* Sanity check */
-  check_buffspace(curr_size, remainsize, "HELLO");
-
-  h = &m->v4.message.hello;
-  hinfo = h->hell_info;
-  haddr = (union olsr_ip_addr *)hinfo->neigh_addr;
-
-  /* Fill message header */
-  m->v4.ttl = message->ttl;
-  m->v4.hopcnt = 0;
-  m->v4.olsr_msgtype = HELLO_MESSAGE;
-  /* Set source(main) addr */
-  m->v4.originator = olsr_cnf->main_addr.v4.s_addr;
-
-  m->v4.olsr_vtime = ifp->valtimes.hello;
-
-  /* Fill HELLO header */
-  h->willingness = message->willingness;
-  h->htime = reltime_to_me(ifp->hello_etime);
-
-  memset(&h->reserved, 0, sizeof(uint16_t));
-
-
-  /*
-   *Loops trough all possible neighbor statuses
-   *The negbor list is grouped by status
-   *
-   */
-  /* Nighbor statuses */
-  for (i = 0; i <= MAX_NEIGH; i++)
-    {
-      /* Link statuses */
-      for(j = 0; j <= MAX_LINK; j++)
-       {
-#ifdef DEBUG
-          struct ipaddr_str buf;
-#endif
-
-         /* HYSTERESIS - Not adding neighbors with link type HIDE */
-
-         if(j == HIDE_LINK)
-             continue;
-
-         first_entry = true;
-
-         /* Looping trough neighbors */
-         for (nb = message->neighbors; nb != NULL; nb = nb->next)
-           {
-             if ((nb->status != i) || (nb->link != j))
-               continue;
-
-#ifdef DEBUG
-             OLSR_PRINTF(BMSG_DBGLVL, "\t%s - ", olsr_ip_to_string(&buf, &nb->address));
-             OLSR_PRINTF(BMSG_DBGLVL, "L:%d N:%d\n", j, i);
-#endif
-             /*
-              * If there is not enough room left
-              * for the data in the outputbuffer
-              * we must send a partial HELLO and
-              * continue building the rest of the
-              * data in a new HELLO message
-              *
-              * If this is the first neighbor in
-              * a group, we must check for an extra
-              * 4 bytes
-              */
-             if((curr_size + olsr_cnf->ipsize + (first_entry ? 4 : 0)) > remainsize)
-               {
-                 /* Only send partial HELLO if it contains data */
-                 if(curr_size > OLSR_HELLO_IPV4_HDRSIZE)
-                   {
-#ifdef DEBUG
-                     OLSR_PRINTF(BMSG_DBGLVL, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-#endif
-                     /* Complete the headers */
-                     m->v4.seqno = htons(get_msg_seqno());
-                     m->v4.olsr_msgsize = htons(curr_size);
-
-                     hinfo->size = htons((char *)haddr - (char *)hinfo);
-
-                     /* Send partial packet */
-                     net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-                     curr_size = OLSR_HELLO_IPV4_HDRSIZE;
-
-                     h = &m->v4.message.hello;
-                     hinfo = h->hell_info;
-                     haddr = (union olsr_ip_addr *)hinfo->neigh_addr;
-                     /* Make sure typeheader is added */
-                     first_entry = true;
-                   }
-
-                 net_output(ifp);
-                 /* Reset size and pointers */
-                 remainsize = net_outbuffer_bytes_left(ifp);
-
-                 /* Sanity check */
-                 check_buffspace(curr_size + olsr_cnf->ipsize + 4, remainsize, "HELLO2");
-               }
-
-             if (first_entry)
-               {
-                 memset(&hinfo->reserved, 0, sizeof(uint8_t));
-                 /* Set link and status for this group of neighbors (this is the first) */
-                 hinfo->link_code = CREATE_LINK_CODE(i, j);
-                 curr_size += 4; /* HELLO type section header */
-               }
-
-             *haddr = nb->address;
-
-             /* Point to next address */
-             haddr = (union olsr_ip_addr *)&haddr->v6.s6_addr[4];
-             curr_size += olsr_cnf->ipsize; /* IP address added */
-
-             first_entry = false;
-           }
-
-         if(!first_entry)
-           {
-             hinfo->size = htons((char *)haddr - (char *)hinfo);
-             hinfo = (struct hellinfo *)((char *)haddr);
-             haddr = (union olsr_ip_addr *)&hinfo->neigh_addr;
-           }
-       } /* for j */
-    } /* for i*/
-
-  m->v4.seqno = htons(get_msg_seqno());
-  m->v4.olsr_msgsize = htons(curr_size);
-
-  net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-  /* HELLO will always be generated */
-  return true;
-}
-
-
-
-
-/**
- * IP version 6
- *
- *@param message the hello_message struct containing the info
- *to build the hello message from.
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-
-static bool
-serialize_hello6(struct hello_message *message, struct interface *ifp)
-{
-  uint16_t remainsize, curr_size;
-  struct hello_neighbor *nb;
-  union olsr_message *m;
-  struct hellomsg6 *h6;
-  struct hellinfo6 *hinfo6;
-  union olsr_ip_addr *haddr;
-  int i, j;
-  bool first_entry;
-
-  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET6))
-    return false;
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-  m = (union olsr_message *)msg_buffer;
-
-  curr_size = OLSR_HELLO_IPV6_HDRSIZE; /* OLSR message header */
-
-  /* Send pending packet if not room in buffer */
-  if(curr_size > remainsize)
-    {
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-    }
-  check_buffspace(curr_size + olsr_cnf->ipsize + 4, remainsize, "HELLO");
-
-  h6 = &m->v6.message.hello;
-  hinfo6 = h6->hell_info;
-  haddr = (union olsr_ip_addr *)hinfo6->neigh_addr;
-
-
-  /* Fill message header */
-  m->v6.ttl = message->ttl;
-  m->v6.hopcnt = 0;
-  /* Set source(main) addr */
-  m->v6.originator = olsr_cnf->main_addr.v6;
-  m->v6.olsr_msgtype = HELLO_MESSAGE;
-
-  m->v6.olsr_vtime = ifp->valtimes.hello;
-
-  /* Fill packet header */
-  h6->willingness = message->willingness;
-  h6->htime = reltime_to_me(ifp->hello_etime);
-  memset(&h6->reserved, 0, sizeof(uint16_t));
-
-  /*
-   *Loops trough all possible neighbor statuses
-   *The negbor list is grouped by status
-   */
-
-  for (i = 0; i <= MAX_NEIGH; i++)
-    {
-      for(j = 0; j <= MAX_LINK; j++)
-       {
-#ifdef DEBUG
-          struct ipaddr_str buf;
-#endif
-         first_entry = true;
-
-         /*
-          *Looping trough neighbors
-          */
-         for (nb = message->neighbors; nb != NULL; nb = nb->next)
-           {
-             if ((nb->status != i) || (nb->link != j))
-               continue;
-
-#ifdef DEBUG
-             OLSR_PRINTF(BMSG_DBGLVL, "\t%s - ", olsr_ip_to_string(&buf, &nb->address));
-             OLSR_PRINTF(BMSG_DBGLVL, "L:%d N:%d\n", j, i);
-#endif
-
-
-             /*
-              * If there is not enough room left
-              * for the data in the outputbuffer
-              * we must send a partial HELLO and
-              * continue building the rest of the
-              * data in a new HELLO message
-              *
-              * If this is the first neighbor in
-              * a group, we must check for an extra
-              * 4 bytes
-              */
-             if((curr_size + olsr_cnf->ipsize + (first_entry ? 4 : 0)) > remainsize)
-               {
-                 /* Only send partial HELLO if it contains data */
-                 if(curr_size > OLSR_HELLO_IPV6_HDRSIZE)
-                   {
-#ifdef DEBUG
-                     OLSR_PRINTF(BMSG_DBGLVL, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-#endif
-                     /* Complete the headers */
-                     m->v6.seqno = htons(get_msg_seqno());
-                     m->v6.olsr_msgsize = htons(curr_size);
-
-                     hinfo6->size = (char *)haddr - (char *)hinfo6;
-                     hinfo6->size = htons(hinfo6->size);
-
-                     /* Send partial packet */
-                     net_outbuffer_push(ifp, msg_buffer, curr_size);
-                     curr_size = OLSR_HELLO_IPV6_HDRSIZE;
-
-                     h6 = &m->v6.message.hello;
-                     hinfo6 = h6->hell_info;
-                     haddr = (union olsr_ip_addr *)hinfo6->neigh_addr;
-                     /* Make sure typeheader is added */
-                     first_entry = true;
-                   }
-                 net_output(ifp);
-                 /* Reset size and pointers */
-                 remainsize = net_outbuffer_bytes_left(ifp);
-
-                 check_buffspace(curr_size + olsr_cnf->ipsize + 4, remainsize, "HELLO2");
-
-               }
-
-             if(first_entry)
-               {
-                 memset(&hinfo6->reserved, 0, sizeof(uint8_t));
-                 /* Set link and status for this group of neighbors (this is the first) */
-                 hinfo6->link_code = CREATE_LINK_CODE(i, j);
-                 curr_size += 4; /* HELLO type section header */
-               }
-
-             *haddr = nb->address;
-
-             /* Point to next address */
-             haddr++;
-             curr_size += olsr_cnf->ipsize; /* IP address added */
-
-             first_entry = false;
-           }/* looping trough neighbors */
-
-
-         if (!first_entry)
-           {
-             hinfo6->size = htons((char *)haddr - (char *)hinfo6);
-             hinfo6 = (struct hellinfo6 *)((char *)haddr);
-             haddr = (union olsr_ip_addr *)&hinfo6->neigh_addr;
-           }
-
-       } /* for j */
-    } /* for i */
-
-  m->v6.seqno = htons(get_msg_seqno());
-  m->v6.olsr_msgsize = htons(curr_size);
-
-  net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-  /* HELLO is always buildt */
-  return true;
-}
-
-
-
-/**
- *IP version 4
- *
- *@param message the tc_message struct containing the info
- *to send
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-static bool
-serialize_tc4(struct tc_message *message, struct interface *ifp)
-{
-#ifdef DEBUG
-  struct ipaddr_str buf;
-#endif
-  uint16_t remainsize, curr_size;
-  struct tc_mpr_addr *mprs;
-  union olsr_message *m;
-  struct olsr_tcmsg *tc;
-  struct neigh_info *mprsaddr;
-  bool found = false;
-
-  if((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET))
-    return false;
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-
-  m = (union olsr_message *)msg_buffer;
-
-  tc = &m->v4.message.tc;
-
-
-  mprsaddr = tc->neigh;
-  curr_size = OLSR_TC_IPV4_HDRSIZE;
-
-  /* Send pending packet if not room in buffer */
-  if(curr_size > remainsize)
-    {
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-    }
-  check_buffspace(curr_size, remainsize, "TC");
-
-  /* Fill header */
-  m->v4.olsr_vtime = ifp->valtimes.tc;
-  m->v4.olsr_msgtype = TC_MESSAGE;
-  m->v4.hopcnt = message->hop_count;
-  m->v4.ttl = message->ttl;
-  m->v4.originator = message->originator.v4.s_addr;
-
-  /* Fill TC header */
-  tc->ansn = htons(message->ansn);
-  tc->reserved = 0;
-
-
-  /*Looping trough MPR selectors */
-  for (mprs = message->multipoint_relay_selector_address; mprs != NULL;mprs = mprs->next)
-    {
-      /*If packet is to be chomped */
-      if((curr_size + olsr_cnf->ipsize) > remainsize)
-       {
-
-         /* Only add TC message if it contains data */
-         if(curr_size > OLSR_TC_IPV4_HDRSIZE)
-           {
-#ifdef DEBUG
-             OLSR_PRINTF(BMSG_DBGLVL, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-#endif
-
-             m->v4.olsr_msgsize = htons(curr_size);
-             m->v4.seqno = htons(get_msg_seqno());
-
-             net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-             /* Reset stuff */
-             mprsaddr = tc->neigh;
-             curr_size = OLSR_TC_IPV4_HDRSIZE;
-             found = false;
-           }
-
-         net_output(ifp);
-         remainsize = net_outbuffer_bytes_left(ifp);
-         check_buffspace(curr_size + olsr_cnf->ipsize, remainsize, "TC2");
-
-       }
-      found = true;
-#ifdef DEBUG
-         OLSR_PRINTF(BMSG_DBGLVL, "\t%s\n",
-                     olsr_ip_to_string(&buf, &mprs->address));
-#endif
-      mprsaddr->addr = mprs->address.v4.s_addr;
-      curr_size += olsr_cnf->ipsize;
-      mprsaddr++;
-    }
-
-  if (found)
-    {
-
-      m->v4.olsr_msgsize = htons(curr_size);
-      m->v4.seqno = htons(get_msg_seqno());
-
-      net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-    }
-
-  return found;
-}
-
-
-
-/**
- *IP version 6
- *
- *@param message the tc_message struct containing the info
- *to send
- *@param ifp the interface to send the message on
- *
- *@return nada
- */
-
-static bool
-serialize_tc6(struct tc_message *message, struct interface *ifp)
-{
-#ifdef DEBUG
-  struct ipaddr_str buf;
-#endif
-  uint16_t remainsize, curr_size;
-  struct tc_mpr_addr *mprs;
-  union olsr_message *m;
-  struct olsr_tcmsg6 *tc6;
-  struct neigh_info6 *mprsaddr6;
-  bool found = false;
-
-  if ((!message) || (!ifp) || (olsr_cnf->ip_version != AF_INET6))
-    return false;
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-
-  m = (union olsr_message *)msg_buffer;
-
-  tc6 = &m->v6.message.tc;
-
-  mprsaddr6 = tc6->neigh;
-  curr_size = OLSR_TC_IPV6_HDRSIZE;
-
-  /* Send pending packet if not room in buffer */
-  if(curr_size > remainsize)
-    {
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-    }
-  check_buffspace(curr_size, remainsize, "TC");
-
-  /* Fill header */
-  m->v6.olsr_vtime = ifp->valtimes.tc;
-  m->v6.olsr_msgtype = TC_MESSAGE;
-  m->v6.hopcnt = message->hop_count;
-  m->v6.ttl = message->ttl;
-  m->v6.originator = message->originator.v6;
-
-  /* Fill TC header */
-  tc6->ansn = htons(message->ansn);
-  tc6->reserved = 0;
-
-
-  /*Looping trough MPR selectors */
-  for (mprs = message->multipoint_relay_selector_address; mprs != NULL;mprs = mprs->next)
-    {
-
-      /*If packet is to be chomped */
-      if((curr_size + olsr_cnf->ipsize) > remainsize)
-       {
-         /* Only add TC message if it contains data */
-         if(curr_size > OLSR_TC_IPV6_HDRSIZE)
-           {
-#ifdef DEBUG
-             OLSR_PRINTF(BMSG_DBGLVL, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-#endif
-             m->v6.olsr_msgsize = htons(curr_size);
-             m->v6.seqno = htons(get_msg_seqno());
-
-             net_outbuffer_push(ifp, msg_buffer, curr_size);
-             mprsaddr6 = tc6->neigh;
-             curr_size = OLSR_TC_IPV6_HDRSIZE;
-             found = false;
-           }
-         net_output(ifp);
-         remainsize = net_outbuffer_bytes_left(ifp);
-         check_buffspace(curr_size + olsr_cnf->ipsize, remainsize, "TC2");
-
-       }
-      found = true;
-#ifdef DEBUG
-         OLSR_PRINTF(BMSG_DBGLVL, "\t%s\n",
-                     olsr_ip_to_string(&buf, &mprs->address));
-#endif
-      mprsaddr6->addr = mprs->address.v6;
-      curr_size += olsr_cnf->ipsize;
-
-      mprsaddr6++;
-    }
-
-  if (found)
-    {
-      m->v6.olsr_msgsize = htons(curr_size);
-      m->v6.seqno = htons(get_msg_seqno());
-
-      net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-    }
-
-  return found;
-}
-
-
-
-
 /**
  *IP version 4
  *
index 15594c8..9cf2e5b 100644 (file)
@@ -41,7 +41,6 @@
 #ifndef _BUILD_MSG_H
 #define _BUILD_MSG_H
 
-#include "packet.h"
 #include "olsr_protocol.h"
 #include <time.h> /* For clock_t */
 
@@ -52,12 +51,6 @@ clock_t
 get_empty_tc_timer(void);
 
 bool
-queue_hello(struct hello_message *, struct interface *);
-
-bool
-queue_tc(struct tc_message *, struct interface *);
-
-bool
 queue_mid(struct interface *);
 
 bool
index 914897b..abb0884 100644 (file)
 static char pulsedata[] = "\\|/-";
 static uint8_t pulse_state = 0;
 
-static void free_tc_packet(struct tc_message *);
-static void build_tc_packet(struct tc_message *);
-
-/**
- *Free the memory allocated for a TC packet.
- *
- *@param message the pointer to the packet to erase
- *
- *@return nada
- */
-static void
-free_tc_packet(struct tc_message *message)
-{
-  struct tc_mpr_addr *mprs = message->multipoint_relay_selector_address;
-  while (mprs != NULL) {
-    struct tc_mpr_addr *prev_mprs = mprs;
-    mprs = mprs->next;
-    free(prev_mprs);
-  }
-}
-
-/**
- *Build an internal TC package for this
- *node.
- *
- *@param message the tc_message struct to fill with info
- *@return 0
- */
-static void
-build_tc_packet(struct tc_message *message)
-{
-  struct neighbor_entry *entry;
-
-  message->multipoint_relay_selector_address = NULL;
-  message->packet_seq_number = 0;
-
-  message->hop_count = 0;
-  message->ttl = MAX_TTL;
-  message->ansn = get_local_ansn();
-
-  message->originator = olsr_cnf->main_addr;
-  message->source_addr = olsr_cnf->main_addr;
-
-  /* Loop trough all neighbors */
-  OLSR_FOR_ALL_NBR_ENTRIES(entry) {
-    struct tc_mpr_addr *message_mpr;
-    if (entry->status != SYM) {
-      continue;
-    }
-
-    switch (olsr_cnf->tc_redundancy) {
-    case 2:
-      break;
-    case 1:
-      if (!entry->is_mpr &&
-          olsr_lookup_mprs_set(&entry->neighbor_main_addr) == NULL) {
-       continue;
-      }
-      break;
-    default:
-      if (olsr_lookup_mprs_set(&entry->neighbor_main_addr) == NULL) {
-       continue;
-      }
-      break;
-    } /* Switch */
-
-    //printf("\t%s\n", olsr_ip_to_string(&mprs->mpr_selector_addr));
-    message_mpr = olsr_malloc_tc_mpr_addr("Build TC");
-
-    message_mpr->address = entry->neighbor_main_addr;
-    message_mpr->next = message->multipoint_relay_selector_address;
-    message->multipoint_relay_selector_address = message_mpr;
-
-  } OLSR_FOR_ALL_NBR_ENTRIES_END(entry);
-}
-
-void
-generate_hello(void *p)
-{
-  struct interface *ifn = p;
-  struct hello_message hellopacket;
-
-  olsr_build_hello_packet(&hellopacket, ifn);
-
-  if (queue_hello(&hellopacket, ifn)) {
-    net_output(ifn);
-  }
-  olsr_free_hello_packet(&hellopacket);
-
-}
-
-/**
- * Callback for TC generation timer.
- */
-void
-generate_tc(void *p)
-{
-  struct interface *ifn = p;
-  struct tc_message tcpacket;
-
-  build_tc_packet(&tcpacket);
-
-  /* empty message ? */
-  if (!tcpacket.multipoint_relay_selector_address) {
-    return;
-  }
-
-  if (queue_tc(&tcpacket, ifn)) {
-    set_buffer_timer(ifn);
-  }
-
-  free_tc_packet(&tcpacket);
-}
-
 void
 generate_mid(void *p)
 {
index 669958f..63bcaf9 100644 (file)
@@ -73,7 +73,7 @@ signal_link_changes(bool val)
 }
 
 /* Prototypes. */
-static int check_link_status(const struct hello_message *message,
+static int check_link_status(const struct lq_hello_message *message,
                              const struct interface *in_if);
 static struct link_entry *add_link_entry(const union olsr_ip_addr *,
                                         const union olsr_ip_addr *,
@@ -583,19 +583,19 @@ lookup_link_entry(const union olsr_ip_addr *remote,
 struct link_entry *
 update_link_entry(const union olsr_ip_addr *local,
                  const union olsr_ip_addr *remote,
-                 const struct hello_message *message,
+                 const struct lq_hello_message *message,
                  struct interface *in_if)
 {
   struct link_entry *entry;
 
   /* Add if not registered */
   entry =
-    add_link_entry(local, remote, &message->source_addr, message->vtime,
+    add_link_entry(local, remote, &message->comm.orig, message->comm.vtime,
                   message->htime, in_if);
 
   /* Update ASYM_time */
-  entry->vtime = message->vtime;
-  entry->ASYM_time = GET_TIMESTAMP(message->vtime);
+  entry->vtime = message->comm.vtime;
+  entry->ASYM_time = GET_TIMESTAMP(message->comm.vtime);
 
   entry->prev_status = check_link_status(message, in_if);
 
@@ -608,13 +608,13 @@ update_link_entry(const union olsr_ip_addr *local,
   case (ASYM_LINK):
 
     /* L_SYM_time = current time + validity time */
-    olsr_set_timer(&entry->link_sym_timer, message->vtime,
+    olsr_set_timer(&entry->link_sym_timer, message->comm.vtime,
                   OLSR_LINK_SYM_JITTER, OLSR_TIMER_ONESHOT,
                   &olsr_expire_link_sym_timer, entry,
                    link_sym_timer_cookie->ci_id);
 
     /* L_time = L_SYM_time + NEIGHB_HOLD_TIME */
-    olsr_set_link_timer(entry, message->vtime + NEIGHB_HOLD_TIME *
+    olsr_set_link_timer(entry, message->comm.vtime + NEIGHB_HOLD_TIME *
                        MSEC_PER_SEC);
     break;
   default:;
@@ -673,21 +673,21 @@ replace_neighbor_link_set(const struct neighbor_entry *old,
  *@return the link status
  */
 static int
-check_link_status(const struct hello_message *message,
+check_link_status(const struct lq_hello_message *message,
                  const struct interface *in_if)
 {
   int ret = UNSPEC_LINK;
-  struct hello_neighbor *neighbors;
+  struct lq_hello_neighbor *neighbors;
 
-  neighbors = message->neighbors;
+  neighbors = message->neigh;
   while (neighbors) {
 
     /*
      * Note: If a neigh has 2 cards we can reach, the neigh
      * will send a Hello with the same IP mentined twice
      */
-    if (ipequal(&neighbors->address, &in_if->ip_addr)) {
-      ret = neighbors->link;
+    if (ipequal(&neighbors->addr, &in_if->ip_addr)) {
+      ret = neighbors->link_type;
       if (SYM_LINK == ret) {
        break;
       }
index 6f89175..b723ed0 100644 (file)
@@ -46,8 +46,8 @@
 #ifndef _LINK_SET_H
 #define _LINK_SET_H
 
+#include "lq_packet.h"
 #include "lq_plugin.h"
-#include "packet.h"
 #include "common/list.h"
 #include "mantissa.h"
 
@@ -123,7 +123,7 @@ struct link_entry *lookup_link_entry(const union olsr_ip_addr *,
 
 struct link_entry *update_link_entry(const union olsr_ip_addr *,
                                     const union olsr_ip_addr *,
-                                    const struct hello_message *,
+                                    const struct lq_hello_message *,
                                     struct interface *);
 
 int check_neighbor_link(const union olsr_ip_addr *);
index bcfc71a..333123b 100644 (file)
@@ -130,7 +130,7 @@ create_lq_hello(struct lq_hello_message *lq_hello, struct interface *outif)
   } OLSR_FOR_ALL_LINK_ENTRIES_END(walker);
 }
 
-static void
+void
 destroy_lq_hello(struct lq_hello_message *lq_hello)
 {
   struct lq_hello_neighbor *walker, *aux;
index c8cf16b..5db602c 100644 (file)
 #define _OLSR_LQ_PACKET_H
 
 #include "olsr_types.h"
-#include "packet.h"
 #include "mantissa.h"
 #include "ipcalc.h"
 
 #define LQ_HELLO_MESSAGE      201
 #define LQ_TC_MESSAGE         202
 
+
 /* deserialized OLSR header */
 
 struct olsr_common {
@@ -92,6 +92,7 @@ struct lq_hello_neighbor {
   uint8_t                neigh_type;
   union olsr_ip_addr       addr;
   struct lq_hello_neighbor *next;
+  olsr_linkcost          cost;
   uint32_t               linkquality[0];
 };
 
@@ -124,6 +125,12 @@ struct lq_tc_message {
   struct tc_mpr_addr    *neigh;
 };
 
+struct tc_mpr_addr {
+  union olsr_ip_addr address;
+  struct tc_mpr_addr *next;
+  uint32_t         linkquality[0];
+};
+
 /* serialized LQ_TC */
 
 struct lq_tc_header {
@@ -165,6 +172,8 @@ void olsr_output_lq_hello(void *para);
 
 void olsr_output_lq_tc(void *para);
 
+void destroy_lq_hello(struct lq_hello_message *lq_hello);
+
 extern bool lq_tc_pending;
 
 #endif
index 8086fcc..cc7e3b3 100644 (file)
@@ -44,7 +44,6 @@
 #include "link_set.h"
 #include "olsr_spf.h"
 #include "lq_packet.h"
-#include "packet.h"
 #include "olsr.h"
 #include "two_hop_neighbor_table.h"
 #include "common/avl.h"
@@ -185,7 +184,7 @@ olsr_serialize_hello_lq_pair(unsigned char *buff,
  */
 void
 olsr_deserialize_hello_lq_pair(const uint8_t ** curr,
-                              struct hello_neighbor *neigh)
+                              struct lq_hello_neighbor *neigh)
 {
   active_lq_handler->deserialize_hello_lq(curr, neigh->linkquality);
   neigh->cost = active_lq_handler->calc_hello_cost(neigh->linkquality);
@@ -265,7 +264,7 @@ olsr_update_packet_loss_worker(struct link_entry *entry, bool lost)
  */
 void
 olsr_memorize_foreign_hello_lq(struct link_entry *local,
-                              struct hello_neighbor *foreign)
+                              struct lq_hello_neighbor *foreign)
 {
   if (foreign) {
     active_lq_handler->memorize_foreign_hello(local->linkquality,
@@ -415,13 +414,13 @@ olsr_clear_tc_lq(struct tc_mpr_addr *target)
  *
  * @return pointer to hello_neighbor
  */
-struct hello_neighbor *
+struct lq_hello_neighbor *
 olsr_malloc_hello_neighbor(const char *id)
 {
-  struct hello_neighbor *h;
+  struct lq_hello_neighbor *h;
 
   h =
-    olsr_malloc(sizeof(struct hello_neighbor) +
+    olsr_malloc(sizeof(struct lq_hello_neighbor) +
                active_lq_handler->hello_lq_size, id);
 
   active_lq_handler->clear_hello(h->linkquality);
index 8a3d7ae..34a2f27 100644 (file)
@@ -46,7 +46,6 @@
 #include "link_set.h"
 #include "olsr_spf.h"
 #include "lq_packet.h"
-#include "packet.h"
 #include "common/avl.h"
 
 #define LINK_COST_BROKEN (1<<22)
@@ -117,14 +116,14 @@ bool olsr_is_relevant_costchange(olsr_linkcost c1, olsr_linkcost c2);
 int olsr_serialize_hello_lq_pair(unsigned char *buff,
                                 struct lq_hello_neighbor *neigh);
 void olsr_deserialize_hello_lq_pair(const uint8_t ** curr,
-                                   struct hello_neighbor *neigh);
+                                   struct lq_hello_neighbor *neigh);
 int olsr_serialize_tc_lq_pair(unsigned char *buff, struct tc_mpr_addr *neigh);
 void olsr_deserialize_tc_lq_pair(const uint8_t ** curr,
                                 struct tc_edge_entry *edge);
 
 void olsr_update_packet_loss_worker(struct link_entry *entry, bool lost);
 void olsr_memorize_foreign_hello_lq(struct link_entry *local,
-                                   struct hello_neighbor *foreign);
+                                   struct lq_hello_neighbor *foreign);
 
 const char *EXPORT(get_link_entry_text)(struct link_entry *entry,
                                char separator,
@@ -145,7 +144,7 @@ void olsr_copylq_link_entry_2_tc_edge_entry(struct tc_edge_entry *target,
 void olsr_clear_tc_lq(struct tc_mpr_addr *target);
 #endif
 
-struct hello_neighbor *olsr_malloc_hello_neighbor(const char *id);
+struct lq_hello_neighbor *olsr_malloc_hello_neighbor(const char *id);
 struct tc_mpr_addr *olsr_malloc_tc_mpr_addr(const char *id);
 struct lq_hello_neighbor *olsr_malloc_lq_hello_neighbor(const char *id);
 struct link_entry *olsr_malloc_link_entry(const char *id);
index c3de488..ab28f08 100644 (file)
@@ -43,7 +43,6 @@
 #include "lq_plugin.h"
 #include "olsr_spf.h"
 #include "lq_packet.h"
-#include "packet.h"
 #include "olsr.h"
 #include "lq_plugin_default_ff.h"
 #include "parser.h"
index 8eb162b..70c1c43 100644 (file)
@@ -42,7 +42,6 @@
 #include "link_set.h"
 #include "olsr_spf.h"
 #include "lq_packet.h"
-#include "packet.h"
 #include "olsr.h"
 #include "lq_plugin_default_float.h"
 
index 3a059b9..565c510 100644 (file)
@@ -43,7 +43,6 @@
 #include "lq_plugin.h"
 #include "olsr_spf.h"
 #include "lq_packet.h"
-#include "packet.h"
 #include "olsr.h"
 #include "lq_plugin_default_fpm.h"
 
diff --git a/src/packet.c b/src/packet.c
deleted file mode 100644 (file)
index a9b6fc0..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#include "packet.h"
-#include "link_set.h"
-#include "mpr_selector_set.h"
-#include "neighbor_table.h"
-
-/**
- *Free the memory allocated for a HELLO packet.
- *
- *@param message the pointer to the packet to erase
- *
- *@return nada
- */
-void
-olsr_free_hello_packet(struct hello_message *message)
-{
-  struct hello_neighbor *nb;
-
-  if(!message)
-    return;
-
-  nb = message->neighbors;
-  while (nb) {
-    struct hello_neighbor *prev_nb = nb;
-    nb = nb->next;
-    free(prev_nb);
-  }
-}
-
-/**
- *Build an internal HELLO package for this
- *node. This MUST be done for each interface.
- *
- *@param message the hello_message struct to fill with info
- *@param outif the interface to send the message on - messages
- *are created individually for each interface!
- *@return 0
- */
-int
-olsr_build_hello_packet(struct hello_message *message, struct interface *outif)
-{
-  struct hello_neighbor   *message_neighbor, *tmp_neigh;
-  struct link_entry       *links;
-  struct neighbor_entry   *neighbor;
-
-#ifdef DEBUG
-  OLSR_PRINTF(3, "\tBuilding HELLO on interface \"%s\"\n", outif->int_name ? outif->int_name : "<null>");
-#endif
-
-  message->neighbors=NULL;
-  message->packet_seq_number=0;
-
-  //message->mpr_seq_number=neighbortable.neighbor_mpr_seq;
-
-  /* Set willingness */
-
-  message->willingness = olsr_cnf->willingness;
-#ifdef DEBUG
-  OLSR_PRINTF(3, "Willingness: %d\n", olsr_cnf->willingness);
-#endif
-
-  /* Set TTL */
-
-  message->ttl = 1;
-  message->source_addr = olsr_cnf->main_addr;
-
-#ifdef DEBUG
-  OLSR_PRINTF(5, "On link:\n");
-#endif
-
-  /* Walk all links of this interface */
-  OLSR_FOR_ALL_LINK_ENTRIES(links) {
-#ifdef DEBUG
-    struct ipaddr_str buf;
-#endif
-    int lnk = lookup_link_status(links);
-    /* Update the status */
-
-    /* Check if this link tuple is registered on the outgoing interface */
-    if (!ipequal(&links->local_iface_addr, &outif->ip_addr)) {
-      continue;
-    }
-
-    message_neighbor = olsr_malloc_hello_neighbor("Build HELLO");
-
-    /* Find the link status */
-    message_neighbor->link = lnk;
-
-    /*
-     * Calculate neighbor status
-     */
-    /*
-     * 2.1  If the main address, corresponding to
-     *      L_neighbor_iface_addr, is included in the MPR set:
-     *
-     *            Neighbor Type = MPR_NEIGH
-     */
-    if (links->neighbor->is_mpr) {
-      message_neighbor->status = MPR_NEIGH;
-    }
-    /*
-     *  2.2  Otherwise, if the main address, corresponding to
-     *       L_neighbor_iface_addr, is included in the neighbor set:
-     */
-
-    /* NOTE:
-     * It is garanteed to be included when come this far
-     * due to the extentions made in the link sensing
-     * regarding main addresses.
-     */
-    else {
-
-      /*
-       *   2.2.1
-       *        if N_status == SYM
-       *
-       *             Neighbor Type = SYM_NEIGH
-       */
-      if (links->neighbor->status == SYM) {
-        message_neighbor->status = SYM_NEIGH;
-      }
-
-      /*
-       *   2.2.2
-       *        Otherwise, if N_status == NOT_SYM
-       *             Neighbor Type = NOT_NEIGH
-       */
-      else if (links->neighbor->status == NOT_SYM) {
-          message_neighbor->status = NOT_NEIGH;
-        }
-    }
-
-    /* Set the remote interface address */
-    message_neighbor->address = links->neighbor_iface_addr;
-
-    /* Set the main address */
-    message_neighbor->main_address = links->neighbor->neighbor_main_addr;
-#ifdef DEBUG
-    OLSR_PRINTF(5, "Added: %s -  status %d\n", olsr_ip_to_string(&buf, &message_neighbor->address), message_neighbor->status);
-#endif
-    message_neighbor->next=message->neighbors;
-    message->neighbors=message_neighbor;
-
-  } OLSR_FOR_ALL_LINK_ENTRIES_END(links);
-
-  /* Add the links */
-
-#ifdef DEBUG
-    OLSR_PRINTF(5, "Not on link:\n");
-#endif
-
-  /* Add the rest of the neighbors if running on multiple interfaces */
-
-  if (!list_is_empty(&interface_head))
-    OLSR_FOR_ALL_NBR_ENTRIES(neighbor) {
-
-#ifdef DEBUG
-    struct ipaddr_str buf;
-#endif
-    /* Check that the neighbor is not added yet */
-    tmp_neigh = message->neighbors;
-    //printf("Checking that the neighbor is not yet added\n");
-    while (tmp_neigh) {
-      if (ipequal(&tmp_neigh->main_address, &neighbor->neighbor_main_addr)) {
-        //printf("Not adding duplicate neighbor %s\n", olsr_ip_to_string(&neighbor->neighbor_main_addr));
-        break;
-      }
-      tmp_neigh = tmp_neigh->next;
-    }
-
-    if (tmp_neigh) {
-      continue;
-    }
-
-         message_neighbor = olsr_malloc_hello_neighbor("Build HELLO 2");
-
-    message_neighbor->link = UNSPEC_LINK;
-
-    /*
-     * Calculate neighbor status
-     */
-    /*
-     * 2.1  If the main address, corresponding to
-     *      L_neighbor_iface_addr, is included in the MPR set:
-     *
-     *            Neighbor Type = MPR_NEIGH
-     */
-    if (neighbor->is_mpr) {
-      message_neighbor->status = MPR_NEIGH;
-    }
-    /*
-     *  2.2  Otherwise, if the main address, corresponding to
-     *       L_neighbor_iface_addr, is included in the neighbor set:
-     */
-
-    /* NOTE:
-     * It is garanteed to be included when come this far
-     * due to the extentions made in the link sensing
-     * regarding main addresses.
-     */
-    else {
-
-      /*
-       *   2.2.1
-       *        if N_status == SYM
-       *
-       *             Neighbor Type = SYM_NEIGH
-       */
-      if (neighbor->status == SYM) {
-        message_neighbor->status = SYM_NEIGH;
-      }
-
-      /*
-       *   2.2.2
-       *        Otherwise, if N_status == NOT_SYM
-       *             Neighbor Type = NOT_NEIGH
-       */
-      else if (neighbor->status == NOT_SYM) {
-        message_neighbor->status = NOT_NEIGH;
-      }
-    }
-
-
-    message_neighbor->address = neighbor->neighbor_main_addr;
-    message_neighbor->main_address = neighbor->neighbor_main_addr;
-#ifdef DEBUG
-    OLSR_PRINTF(5, "Added: %s -  status  %d\n", olsr_ip_to_string(&buf, &message_neighbor->address), message_neighbor->status);
-#endif
-    message_neighbor->next=message->neighbors;
-    message->neighbors=message_neighbor;
-
-  } OLSR_FOR_ALL_NBR_ENTRIES_END(neighbor);
-
-  return 0;
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/packet.h b/src/packet.h
deleted file mode 100644 (file)
index 6ef877d..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-#ifndef _OLSR_PACKET
-#define _OLSR_PACKET
-
-#include "olsr_protocol.h"
-#include "interfaces.h"
-#include "mantissa.h"
-
-struct hello_neighbor {
-  uint8_t             status;
-  uint8_t             link;
-  union olsr_ip_addr    main_address;
-  union olsr_ip_addr    address;
-  struct hello_neighbor *next;
-  olsr_linkcost         cost;
-  uint32_t            linkquality[0];
-};
-
-struct hello_message {
-  olsr_reltime           vtime;
-  olsr_reltime           htime;
-  union olsr_ip_addr     source_addr;
-  uint16_t             packet_seq_number;
-  uint8_t              hop_count;
-  uint8_t              ttl;
-  uint8_t              willingness;
-  struct hello_neighbor  *neighbors;
-};
-
-struct tc_mpr_addr {
-  union olsr_ip_addr address;
-  struct tc_mpr_addr *next;
-  uint32_t         linkquality[0];
-};
-
-struct tc_message {
-  olsr_reltime        vtime;
-  union olsr_ip_addr  source_addr;
-  union olsr_ip_addr  originator;
-  uint16_t          packet_seq_number;
-  uint8_t           hop_count;
-  uint8_t           ttl;
-  uint16_t          ansn;
-  struct tc_mpr_addr  *multipoint_relay_selector_address;
-};
-
-
-void
-olsr_free_hello_packet(struct hello_message *);
-
-int
-olsr_build_hello_packet(struct hello_message *, struct interface *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
index 114fe31..2c1aab8 100644 (file)
@@ -43,7 +43,7 @@
 #define _OLSR_MSG_PARSER
 
 #include "olsr_protocol.h"
-#include "packet.h"
+#include "lq_packet.h"
 
 #define PROMISCUOUS 0xffffffff
 
index a5704ec..2621896 100644 (file)
 static bool olsr_input_hello(union olsr_message *ser, struct interface *inif, union olsr_ip_addr *from);
 
 static void process_message_neighbors(struct neighbor_entry *,
-                                      const struct hello_message *);
+                                      const struct lq_hello_message *);
 
 static void linking_this_2_entries(struct neighbor_entry *,
                                    struct neighbor_2_entry *,
                                    olsr_reltime);
 
-static bool lookup_mpr_status(const struct hello_message *,
+static bool lookup_mpr_status(const struct lq_hello_message *,
                                    const struct interface *);
 
-static void hello_tap(struct hello_message *, struct interface *,
+static void hello_tap(struct lq_hello_message *, struct interface *,
                       const union olsr_ip_addr *);
 
 
@@ -71,13 +71,13 @@ static void hello_tap(struct hello_message *, struct interface *,
  * @return nada
  */
 static void
-process_message_neighbors(struct neighbor_entry *neighbor, const struct hello_message *message)
+process_message_neighbors(struct neighbor_entry *neighbor, const struct lq_hello_message *message)
 {
-  struct hello_neighbor *message_neighbors;
+  struct lq_hello_neighbor *message_neighbors;
   olsr_linkcost first_hop_pathcost;
   struct link_entry *lnk;
 
-  for (message_neighbors = message->neighbors;
+  for (message_neighbors = message->neigh;
        message_neighbors != NULL;
        message_neighbors = message_neighbors->next) {
 #ifdef DEBUG
@@ -91,28 +91,28 @@ process_message_neighbors(struct neighbor_entry *neighbor, const struct hello_me
      * 2 hop list
      * IMPORTANT!
      */
-    if (if_ifwithaddr(&message_neighbors->address) != NULL) {
+    if (if_ifwithaddr(&message_neighbors->addr) != NULL) {
         continue;
     }
     /* Get the main address */
-    neigh_addr = olsr_lookup_main_addr_by_alias(&message_neighbors->address);
+    neigh_addr = olsr_lookup_main_addr_by_alias(&message_neighbors->addr);
     if (neigh_addr != NULL) {
-      message_neighbors->address = *neigh_addr;
+      message_neighbors->addr = *neigh_addr;
     }
 
-    if (message_neighbors->status == SYM_NEIGH ||
-        message_neighbors->status == MPR_NEIGH) {
+    if (message_neighbors->neigh_type == SYM_NEIGH ||
+        message_neighbors->neigh_type == MPR_NEIGH) {
       struct neighbor_2_list_entry *two_hop_neighbor_yet =
-        olsr_lookup_my_neighbors(neighbor, &message_neighbors->address);
+        olsr_lookup_my_neighbors(neighbor, &message_neighbors->addr);
 #ifdef DEBUG
-      OLSR_PRINTF(7, "\tProcessing %s\n", olsr_ip_to_string(&buf, &message_neighbors->address));
+      OLSR_PRINTF(7, "\tProcessing %s\n", olsr_ip_to_string(&buf, &message_neighbors->addr));
 #endif
       if (two_hop_neighbor_yet != NULL) {
         struct neighbor_list_entry *walker;
 
         /* Updating the holding time for this neighbor */
         olsr_set_timer(&two_hop_neighbor_yet->nbr2_list_timer,
-                       message->vtime, OLSR_NBR2_LIST_JITTER,
+                       message->comm.vtime, OLSR_NBR2_LIST_JITTER,
                        OLSR_TIMER_ONESHOT, &olsr_expire_nbr2_list,
                        two_hop_neighbor_yet, nbr2_list_timer_cookie->ci_id);
 
@@ -138,18 +138,18 @@ process_message_neighbors(struct neighbor_entry *neighbor, const struct hello_me
           }
         }
       } else {
-       struct neighbor_2_entry *two_hop_neighbor = olsr_lookup_two_hop_neighbor_table(&message_neighbors->address);
+       struct neighbor_2_entry *two_hop_neighbor = olsr_lookup_two_hop_neighbor_table(&message_neighbors->addr);
         if (two_hop_neighbor == NULL) {
 #ifdef DEBUG
           OLSR_PRINTF(5,
                       "Adding 2 hop neighbor %s\n\n",
-                      olsr_ip_to_string(&buf, &message_neighbors->address));
+                      olsr_ip_to_string(&buf, &message_neighbors->addr));
 #endif
           two_hop_neighbor = olsr_malloc(sizeof(*two_hop_neighbor), "Process HELLO");
           two_hop_neighbor->neighbor_2_nblist.next = &two_hop_neighbor->neighbor_2_nblist;
           two_hop_neighbor->neighbor_2_nblist.prev = &two_hop_neighbor->neighbor_2_nblist;
           two_hop_neighbor->neighbor_2_pointer = 0;
-          two_hop_neighbor->neighbor_2_addr = message_neighbors->address;
+          two_hop_neighbor->neighbor_2_addr = message_neighbors->addr;
           olsr_insert_two_hop_neighbor_table(two_hop_neighbor);
         }
        /*
@@ -157,7 +157,7 @@ process_message_neighbors(struct neighbor_entry *neighbor, const struct hello_me
         */
        changes_neighborhood = true;
        changes_topology = true;
-       linking_this_2_entries(neighbor, two_hop_neighbor, message->vtime);
+       linking_this_2_entries(neighbor, two_hop_neighbor, message->comm.vtime);
       }
     }
   }
@@ -178,17 +178,17 @@ process_message_neighbors(struct neighbor_entry *neighbor, const struct hello_me
    * different quality) we want to select only the best one, not just
    * the last one listed in the HELLO message.
    */
-  for(message_neighbors = message->neighbors;
+  for(message_neighbors = message->neigh;
       message_neighbors != NULL;
       message_neighbors = message_neighbors->next) {
-    if (if_ifwithaddr(&message_neighbors->address) != NULL) {
+    if (if_ifwithaddr(&message_neighbors->addr) != NULL) {
           continue;
     }
-    if (message_neighbors->status == SYM_NEIGH ||
-        message_neighbors->status == MPR_NEIGH) {
+    if (message_neighbors->neigh_type == SYM_NEIGH ||
+        message_neighbors->neigh_type == MPR_NEIGH) {
       struct neighbor_list_entry *walker;
       struct neighbor_2_list_entry *two_hop_neighbor_yet =
-        olsr_lookup_my_neighbors(neighbor, &message_neighbors->address);
+        olsr_lookup_my_neighbors(neighbor, &message_neighbors->addr);
 
       if (!two_hop_neighbor_yet) {
         continue;
@@ -287,16 +287,16 @@ linking_this_2_entries(struct neighbor_entry *neighbor, struct neighbor_2_entry
  * @return 1 if we are selected as MPR 0 if not
  */
 static bool
-lookup_mpr_status(const struct hello_message *message,
+lookup_mpr_status(const struct lq_hello_message *message,
                   const struct interface *in_if)
 {
-  struct hello_neighbor *neighbors;
+  struct lq_hello_neighbor *neighbors;
 
-  for (neighbors = message->neighbors; neighbors; neighbors = neighbors->next) {
+  for (neighbors = message->neigh; neighbors; neighbors = neighbors->next) {
     if (olsr_cnf->ip_version == AF_INET
-        ? ip4equal(&neighbors->address.v4, &in_if->ip_addr.v4)
-        : ip6equal(&neighbors->address.v6, &in_if->int6_addr.sin6_addr)) {
-      return neighbors->link == SYM_LINK && neighbors->status == MPR_NEIGH ? true : false;
+        ? ip4equal(&neighbors->addr.v4, &in_if->ip_addr.v4)
+        : ip6equal(&neighbors->addr.v6, &in_if->int6_addr.sin6_addr)) {
+      return neighbors->link_type == SYM_LINK && neighbors->neigh_type == MPR_NEIGH ? true : false;
     }
   }
   /* Not found */
@@ -319,7 +319,7 @@ olsr_init_package_process(void)
 }
 
 static int
-deserialize_hello(struct hello_message *hello, const void *ser)
+deserialize_hello(struct lq_hello_message *hello, const void *ser)
 {
   const unsigned char *limit;
   uint8_t type;
@@ -331,19 +331,19 @@ deserialize_hello(struct hello_message *hello, const void *ser)
     /* No need to do anything more */
     return 1;
   }
-  pkt_get_reltime(&curr, &hello->vtime);
+  pkt_get_reltime(&curr, &hello->comm.vtime);
   pkt_get_u16(&curr, &size);
-  pkt_get_ipaddress(&curr, &hello->source_addr);
+  pkt_get_ipaddress(&curr, &hello->comm.orig);
 
-  pkt_get_u8(&curr, &hello->ttl);
-  pkt_get_u8(&curr, &hello->hop_count);
-  pkt_get_u16(&curr, &hello->packet_seq_number);
+  pkt_get_u8(&curr, &hello->comm.ttl);
+  pkt_get_u8(&curr, &hello->comm.hops);
+  pkt_get_u16(&curr, &hello->comm.seqno);
   pkt_ignore_u16(&curr);
 
   pkt_get_reltime(&curr, &hello->htime);
-  pkt_get_u8(&curr, &hello->willingness);
+  pkt_get_u8(&curr, &hello->will);
 
-  hello->neighbors = NULL;
+  hello->neigh = NULL;
   limit = ((const unsigned char *)ser) + size;
   while (curr < limit) {
     const struct lq_hello_info_header *info_head = (const struct lq_hello_info_header *)curr;
@@ -351,17 +351,17 @@ deserialize_hello(struct hello_message *hello, const void *ser)
 
     curr = (const unsigned char *)(info_head + 1);
     while (curr < limit2) {
-      struct hello_neighbor *neigh = olsr_malloc_hello_neighbor("HELLO deserialization");
-      pkt_get_ipaddress(&curr, &neigh->address);
+      struct lq_hello_neighbor *neigh = olsr_malloc_hello_neighbor("HELLO deserialization");
+      pkt_get_ipaddress(&curr, &neigh->addr);
 
       if (type == LQ_HELLO_MESSAGE) {
         olsr_deserialize_hello_lq_pair(&curr, neigh);
       }
-      neigh->link = EXTRACT_LINK(info_head->link_code);
-      neigh->status = EXTRACT_STATUS(info_head->link_code);
+      neigh->link_type = EXTRACT_LINK(info_head->link_code);
+      neigh->neigh_type = EXTRACT_STATUS(info_head->link_code);
 
-      neigh->next = hello->neighbors;
-      hello->neighbors = neigh;
+      neigh->next = hello->neigh;
+      hello->neigh = neigh;
     }
   }
   return 0;
@@ -369,7 +369,7 @@ deserialize_hello(struct hello_message *hello, const void *ser)
 
 
 static void
-hello_tap(struct hello_message *message,
+hello_tap(struct lq_hello_message *message,
           struct interface *in_if,
           const union olsr_ip_addr *from_addr)
 {
@@ -377,13 +377,13 @@ hello_tap(struct hello_message *message,
    * Update link status
    */
   struct link_entry *lnk = update_link_entry(&in_if->ip_addr, from_addr, message, in_if);
-  struct hello_neighbor *walker;
+  struct lq_hello_neighbor *walker;
   /* just in case our neighbor has changed its HELLO interval */
   olsr_update_packet_loss_hello_int(lnk, message->htime);
 
   /* find the input interface in the list of neighbor interfaces */
-  for (walker = message->neighbors; walker != NULL; walker = walker->next) {
-    if (ipequal(&walker->address, &in_if->ip_addr)) {
+  for (walker = message->neigh; walker != NULL; walker = walker->next) {
+    if (ipequal(&walker->addr, &in_if->ip_addr)) {
       break;
     }
   }
@@ -400,20 +400,20 @@ hello_tap(struct hello_message *message,
   /* Check if we are chosen as MPR */
   if (lookup_mpr_status(message, in_if)) {
     /* source_addr is always the main addr of a node! */
-    olsr_update_mprs_set(&message->source_addr, message->vtime);
+    olsr_update_mprs_set(&message->comm.orig, message->comm.vtime);
   }
 
   /* Check willingness */
-  if (lnk->neighbor->willingness != message->willingness) {
+  if (lnk->neighbor->willingness != message->will) {
     struct ipaddr_str buf;
     OLSR_PRINTF(1, "Willingness for %s changed from %d to %d - UPDATING\n",
                 olsr_ip_to_string(&buf, &lnk->neighbor->neighbor_main_addr),
                 lnk->neighbor->willingness,
-                message->willingness);
+                message->will);
     /*
      *If willingness changed - recalculate
      */
-    lnk->neighbor->willingness = message->willingness;
+    lnk->neighbor->willingness = message->will;
     changes_neighborhood = true;
     changes_topology = true;
   }
@@ -426,12 +426,12 @@ hello_tap(struct hello_message *message,
   /* Process changes immedeatly in case of MPR updates */
   olsr_process_changes();
 
-  olsr_free_hello_packet(message);
+  destroy_lq_hello(message);
 }
 
 static bool olsr_input_hello(union olsr_message *msg, struct interface *inif, union olsr_ip_addr *from)
 {
-  struct hello_message hello;
+  struct lq_hello_message hello;
 
   if (msg == NULL) {
     return false;
index d9f9c6d..02a0a9d 100644 (file)
 #define _OLSR_TOP_SET
 
 #include "defs.h"
-#include "packet.h"
 #include "common/avl.h"
 #include "common/list.h"
+#include "olsr_protocol.h"
+#include "lq_packet.h"
 #include "scheduler.h"
 #include "olsr_cookie.h"