unify HNA generation and put it into hna_set.c
authorHenning Rogge <hrogge@googlemail.com>
Sat, 8 Aug 2009 16:22:47 +0000 (18:22 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Sat, 8 Aug 2009 16:22:47 +0000 (18:22 +0200)
12 files changed:
gui/linux-gtk/src/main.h
src/build_msg.c [deleted file]
src/build_msg.h [deleted file]
src/generate_msg.c [deleted file]
src/generate_msg.h [deleted file]
src/hna_set.c
src/hna_set.h
src/lq_packet.c
src/main.c
src/mid_set.c
src/unix/ifnet.c
src/win32/ifnet.c

index b215de1..2f3559f 100644 (file)
 int timeouts;
 
 
-int
-  add_timeouts();
-
-
+int add_timeouts();
 gint ipc_timeout(gpointer);
-
-
-void
-  shutdown_(int);
+void shutdown_(int);
 
 /*
  * Local Variables:
diff --git a/src/build_msg.c b/src/build_msg.c
deleted file mode 100644 (file)
index 6901de1..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * 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 "build_msg.h"
-#include "ipcalc.h"
-#include "olsr.h"
-#include "log.h"
-#include "olsr_time.h"
-#include "net_olsr.h"
-#include "olsr_ip_prefix_list.h"
-
-#include <stdlib.h>
-
-#define OLSR_IPV4_HDRSIZE          12
-#define OLSR_IPV6_HDRSIZE          24
-
-#define OLSR_HELLO_IPV4_HDRSIZE    (OLSR_IPV4_HDRSIZE + 4)
-#define OLSR_HELLO_IPV6_HDRSIZE    (OLSR_IPV6_HDRSIZE + 4)
-#define OLSR_TC_IPV4_HDRSIZE       (OLSR_IPV4_HDRSIZE + 4)
-#define OLSR_TC_IPV6_HDRSIZE       (OLSR_IPV6_HDRSIZE + 4)
-#define OLSR_MID_IPV4_HDRSIZE      OLSR_IPV4_HDRSIZE
-#define OLSR_MID_IPV6_HDRSIZE      OLSR_IPV6_HDRSIZE
-#define OLSR_HNA_IPV4_HDRSIZE      OLSR_IPV4_HDRSIZE
-#define OLSR_HNA_IPV6_HDRSIZE      OLSR_IPV6_HDRSIZE
-
-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];
-
-/* Prototypes for internal functions */
-
-/* IPv4 */
-
-static bool serialize_hna4(struct interface *);
-
-/* IPv6 */
-
-static bool serialize_hna6(struct interface *);
-
-/**
- *Builds a HNA message in the outputbuffer
- *<b>NB! Not internal packetformat!</b>
- *
- *@param ifp the interface to send on
- *@return nada
- */
-bool
-queue_hna(struct interface * ifp)
-{
-  OLSR_INFO(LOG_PACKET_CREATION, "Building HNA on %s\n-------------------\n", ifp->int_name);
-
-  switch (olsr_cnf->ip_version) {
-  case (AF_INET):
-    return serialize_hna4(ifp);
-  case (AF_INET6):
-    return serialize_hna6(ifp);
-  }
-  return false;
-}
-
-/*
- * Protocol specific versions
- */
-
-
-static void
-check_buffspace(int msgsize, int buffsize, const char *type __attribute__ ((unused)))
-{
-  if (msgsize > buffsize) {
-    OLSR_ERROR(LOG_PACKET_CREATION, "%s build, outputbuffer to small(%d/%d)!\n", type, msgsize, buffsize);
-    olsr_exit(EXIT_FAILURE);
-  }
-}
-
-/**
- *IP version 4
- *
- *@param ifp the interface to send on
- *@return nada
- */
-static bool
-serialize_hna4(struct interface *ifp)
-{
-  uint16_t remainsize, curr_size;
-  /* preserve existing data in output buffer */
-  union olsr_message *m;
-  struct hnapair *pair;
-  struct ip_prefix_entry *h;
-#if !defined REMOVE_LOG_DEBUG
-  struct ipprefix_str prefixstr;
-#endif
-  /* No hna nets */
-  if (ifp == NULL) {
-    return false;
-  }
-  if (olsr_cnf->ip_version != AF_INET) {
-    return false;
-  }
-  if (list_is_empty(&olsr_cnf->hna_entries)) {
-    return false;
-  }
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-
-  curr_size = OLSR_HNA_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, "HNA");
-
-  m = (union olsr_message *)msg_buffer;
-
-
-  /* Fill header */
-  m->v4.originator = olsr_cnf->router_id.v4.s_addr;
-  m->v4.hopcnt = 0;
-  m->v4.ttl = MAX_TTL;
-  m->v4.olsr_msgtype = HNA_MESSAGE;
-  m->v4.olsr_vtime = reltime_to_me(olsr_cnf->hna_params.validity_time);
-
-
-  pair = m->v4.message.hna.hna_net;
-
-  OLSR_FOR_ALL_IPPREFIX_ENTRIES(&olsr_cnf->hna_entries, h) {
-    union olsr_ip_addr ip_addr;
-    if ((curr_size + (2 * olsr_cnf->ipsize)) > remainsize) {
-      /* Only add HNA message if it contains data */
-      if (curr_size > OLSR_HNA_IPV4_HDRSIZE) {
-        OLSR_DEBUG(LOG_PACKET_CREATION, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-        m->v4.seqno = htons(get_msg_seqno());
-        m->v4.olsr_msgsize = htons(curr_size);
-        net_outbuffer_push(ifp, msg_buffer, curr_size);
-        curr_size = OLSR_HNA_IPV4_HDRSIZE;
-        pair = m->v4.message.hna.hna_net;
-      }
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-      check_buffspace(curr_size + (2 * olsr_cnf->ipsize), remainsize, "HNA2");
-    }
-    OLSR_DEBUG(LOG_PACKET_CREATION, "\tNet: %s\n", olsr_ip_prefix_to_string(&prefixstr, &h->net));
-    pair->addr = h->net.prefix.v4.s_addr;
-    olsr_prefix_to_netmask(&ip_addr, h->net.prefix_len);
-    pair->netmask = ip_addr.v4.s_addr;
-    pair++;
-    curr_size += (2 * olsr_cnf->ipsize);
-  }
-  OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
-
-    m->v4.seqno = htons(get_msg_seqno());
-  m->v4.olsr_msgsize = htons(curr_size);
-
-  net_outbuffer_push(ifp, msg_buffer, curr_size);
-
-  return false;
-}
-
-
-/**
- *IP version 6
- *
- *@param ifp the interface to send on
- *@return nada
- */
-static bool
-serialize_hna6(struct interface *ifp)
-{
-  uint16_t remainsize, curr_size;
-  /* preserve existing data in output buffer */
-  union olsr_message *m;
-  struct hnapair6 *pair6;
-  union olsr_ip_addr tmp_netmask;
-  struct ip_prefix_entry *h;
-#if !defined REMOVE_LOG_DEBUG
-  struct ipprefix_str prefixstr;
-#endif
-
-  /* No hna nets */
-  if ((olsr_cnf->ip_version != AF_INET6) || (!ifp) || list_is_empty(&olsr_cnf->hna_entries))
-    return false;
-
-
-  remainsize = net_outbuffer_bytes_left(ifp);
-
-  curr_size = OLSR_HNA_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, "HNA");
-
-  m = (union olsr_message *)msg_buffer;
-
-  /* Fill header */
-  m->v6.originator = olsr_cnf->router_id.v6;
-  m->v6.hopcnt = 0;
-  m->v6.ttl = MAX_TTL;
-  m->v6.olsr_msgtype = HNA_MESSAGE;
-  m->v6.olsr_vtime = reltime_to_me(olsr_cnf->hna_params.validity_time);
-
-  pair6 = m->v6.message.hna.hna_net;
-
-
-  OLSR_FOR_ALL_IPPREFIX_ENTRIES(&olsr_cnf->hna_entries, h) {
-    if ((curr_size + (2 * olsr_cnf->ipsize)) > remainsize) {
-      /* Only add HNA message if it contains data */
-      if (curr_size > OLSR_HNA_IPV6_HDRSIZE) {
-        OLSR_DEBUG(LOG_PACKET_CREATION, "Sending partial(size: %d, buff left:%d)\n", curr_size, remainsize);
-        m->v6.seqno = htons(get_msg_seqno());
-        m->v6.olsr_msgsize = htons(curr_size);
-        net_outbuffer_push(ifp, msg_buffer, curr_size);
-        curr_size = OLSR_HNA_IPV6_HDRSIZE;
-        pair6 = m->v6.message.hna.hna_net;
-      }
-      net_output(ifp);
-      remainsize = net_outbuffer_bytes_left(ifp);
-      check_buffspace(curr_size + (2 * olsr_cnf->ipsize), remainsize, "HNA2");
-    }
-    OLSR_DEBUG(LOG_PACKET_CREATION, "\tNet: %s\n", olsr_ip_prefix_to_string(&prefixstr, &h->net));
-    pair6->addr = h->net.prefix.v6;
-    olsr_prefix_to_netmask(&tmp_netmask, h->net.prefix_len);
-    pair6->netmask = tmp_netmask.v6;
-    pair6++;
-    curr_size += (2 * olsr_cnf->ipsize);
-  }
-  OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
-
-    m->v6.olsr_msgsize = htons(curr_size);
-  m->v6.seqno = htons(get_msg_seqno());
-
-  net_outbuffer_push(ifp, msg_buffer, curr_size);
-  return false;
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/build_msg.h b/src/build_msg.h
deleted file mode 100644 (file)
index 44cc52f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * 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 _BUILD_MSG_H
-#define _BUILD_MSG_H
-
-#include "olsr_protocol.h"
-
-bool queue_hna(struct interface *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/generate_msg.c b/src/generate_msg.c
deleted file mode 100644 (file)
index cfc469c..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * 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 "generate_msg.h"
-#include "lq_plugin.h"
-#include "olsr.h"
-#include "build_msg.h"
-
-/*
- * Infomation repositiries
- */
-#include "mid_set.h"
-#include "tc_set.h"
-#include "neighbor_table.h"
-#include "net_olsr.h"
-
-static char pulsedata[] = "\\|/-";
-static uint8_t pulse_state = 0;
-
-void
-generate_hna(void *p)
-{
-  struct interface *ifn = p;
-
-  if (queue_hna(ifn)) {
-    set_buffer_timer(ifn);
-  }
-}
-
-
-void
-generate_stdout_pulse(void *foo __attribute__ ((unused)))
-{
-  if (pulsedata[++pulse_state] == '\0') {
-    pulse_state = 0;
-  }
-  fprintf(stderr, "%c\r", pulsedata[pulse_state]);
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/src/generate_msg.h b/src/generate_msg.h
deleted file mode 100644 (file)
index 7d317ca..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * 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_GEN_MSG
-#define _OLSR_GEN_MSG
-
-#include "interfaces.h"
-
-#define STDOUT_PULSE_INT 600    /* msec */
-
-/* Functions */
-
-void
-  generate_hello(void *);
-
-void
-  generate_mid(void *);
-
-void
-  generate_hna(void *);
-
-void
-  generate_tc(void *);
-
-void
-  generate_stdout_pulse(void *);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
index 7a9a5ae..b5681a3 100644 (file)
@@ -336,7 +336,52 @@ olsr_input_hna(union olsr_message *msg, struct interface *in_if __attribute__ ((
    * Prune the HNAs that did not get refreshed by this advertisment.
    */
   olsr_prune_hna_entries(tc);
+}
+
+void
+generate_hna(void *p) {
+  struct interface *ifp = p;
+  struct ip_prefix_entry *h;
+  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+  uint8_t *curr = msg_buffer;
+  uint8_t *length_field, *last;
+  bool sendHNA = false;
+
+  OLSR_INFO(LOG_PACKET_CREATION, "Building HNA on %s\n-------------------\n", ifp->int_name);
+
+  pkt_put_u8(&curr, HNA_MESSAGE);
+  pkt_put_reltime(&curr, olsr_cnf->hna_params.validity_time);
+
+  length_field = curr;
+  pkt_put_u16(&curr, 0); /* put in real messagesize later */
+
+  pkt_put_ipaddress(&curr, &olsr_cnf->router_id);
+
+  pkt_put_u8(&curr, 255);
+  pkt_put_u8(&curr, 0);
+  pkt_put_u16(&curr, get_msg_seqno());
 
+  last = msg_buffer + sizeof(msg_buffer) - olsr_cnf->ipsize;
+  OLSR_FOR_ALL_IPPREFIX_ENTRIES(&olsr_cnf->hna_entries, h) {
+    union olsr_ip_addr subnet;
+
+    olsr_prefix_to_netmask(&subnet, h->net.prefix_len);
+    sendHNA = true;
+    pkt_put_ipaddress(&curr, &h->net.prefix);
+    pkt_put_ipaddress(&curr, &subnet);
+  } OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
+
+  if (!sendHNA) {
+    return;
+  }
+
+  pkt_put_u16(&length_field, curr - msg_buffer);
+
+  if (net_outbuffer_bytes_left(ifp) < curr - msg_buffer) {
+    net_output(ifp);
+    set_buffer_timer(ifp);
+  }
+  net_outbuffer_push(ifp, msg_buffer, curr - msg_buffer);
 }
 
 /*
index 2840643..989e91b 100644 (file)
@@ -75,6 +75,7 @@ void olsr_input_hna(union olsr_message *, struct interface *, union olsr_ip_addr
 void olsr_init_hna_set(void);
 void olsr_flush_hna_nets(struct tc_entry *tc);
 void olsr_print_hna_set(void);
+void generate_hna(void *p);
 
 #endif
 
index 37ee8a2..cd3aed8 100644 (file)
@@ -50,7 +50,6 @@
 #include "olsr_time.h"
 #include "process_package.h"    // XXX - remove
 #include "olsr.h"
-#include "build_msg.h"
 #include "net_olsr.h"
 #include "lq_plugin.h"
 #include "olsr_logging.h"
index 1ebd0c4..7002dc3 100644 (file)
 #include "log.h"
 #include "scheduler.h"
 #include "parser.h"
-#include "generate_msg.h"
 #include "plugin_loader.h"
 #include "apm.h"
 #include "net_os.h"
-#include "build_msg.h"
 #include "net_olsr.h"
 #include "misc.h"
 #include "olsr_cfg_gen.h"
@@ -72,6 +70,8 @@
 #include "kernel_routes.h"
 #endif
 
+#define STDOUT_PULSE_INT 600    /* msec */
+
 #ifdef WIN32
 int __stdcall SignalHandler(unsigned long signo);
 void DisableIcmpRedirects(void);
@@ -95,6 +95,18 @@ volatile enum app_state app_state = STATE_INIT;
 static char copyright_string[] __attribute__ ((unused)) =
   "The olsr.org Optimized Link-State Routing daemon(olsrd) Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org) All rights reserved.";
 
+static char pulsedata[] = "\\|/-";
+static uint8_t pulse_state = 0;
+
+static void
+generate_stdout_pulse(void *foo __attribute__ ((unused)))
+{
+  if (pulsedata[++pulse_state] == '\0') {
+    pulse_state = 0;
+  }
+  fprintf(stderr, "%c\r", pulsedata[pulse_state]);
+}
+
 /**
  * Main entrypoint
  */
index 6d4d7d6..673f7f9 100644 (file)
@@ -533,6 +533,7 @@ generate_mid(void *p) {
   uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
   uint8_t *curr = msg_buffer;
   uint8_t *length_field, *last;
+  bool sendMID = false;
 
   OLSR_INFO(LOG_PACKET_CREATION, "Building MID on %s\n-------------------\n", ifp->int_name);
 
@@ -556,9 +557,14 @@ generate_mid(void *p) {
         return;
       }
       pkt_put_ipaddress(&curr, &allif->ip_addr);
+      sendMID = true;
     }
   } OLSR_FOR_ALL_INTERFACES_END(allif)
 
+  if (!sendMID) {
+    return;
+  }
+
   pkt_put_u16(&length_field, curr - msg_buffer);
 
   if (net_outbuffer_bytes_left(ifp) < curr - msg_buffer) {
index 633a788..e518d86 100644 (file)
 #include "net_olsr.h"
 #include "parser.h"
 #include "scheduler.h"
-#include "generate_msg.h"
 #include "olsr_time.h"
 #include "lq_packet.h"
 #include "log.h"
 #include "link_set.h"
+#include "mid_set.h"
+#include "hna_set.h"
 #include "../common/string.h"
 #include "../valgrind/valgrind.h"
 
index 3c82f76..ac34cd4 100644 (file)
 #include "defs.h"
 #include "net_os.h"
 #include "ifnet.h"
-#include "generate_msg.h"
 #include "scheduler.h"
 #include "olsr_time.h"
 #include "lq_packet.h"
 #include "net_olsr.h"
 #include "common/string.h"
 #include "olsr_logging.h"
+#include "mid_set.h"
+#include "hna_set.h"
 
 #include <iphlpapi.h>
 #include <iprtrmib.h>