new lq-plugin (etx_ff)
authorHenning Rogge <rogge@fgan.de>
Tue, 1 Jul 2008 07:39:38 +0000 (09:39 +0200)
committerHenning Rogge <rogge@fgan.de>
Tue, 1 Jul 2008 07:39:38 +0000 (09:39 +0200)
"bugfixes" for etx_fpm plugin that allow lq values grow to 1.0

1  2 
src/duplicate_set.c
src/duplicate_set.h

@@@ -1,38 -1,38 +1,33 @@@
  /*
   * The olsr.org Optimized Link-State Routing daemon(olsrd)
--<<<<<<< /home/rogge/develop/olsrd/olsrd-linkset-refactoring/src/duplicate_set.c
   * Copyright (c) 2008 Henning Rogge <rogge@fgan.de>
--=======
-- * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
-- * Copyright (c) 2008 Henning Rogge <rogge@fgan.de>
-->>>>>>> /tmp/duplicate_set.c~other.bvK6d3
   * All rights reserved.
   *
-- * Redistribution and use in source and binary forms, with or without 
-- * modification, are permitted provided that the following conditions 
++ * 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 
++ * * 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 
++ * * 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 
++ * * 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 
++ * 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.
@@@ -59,7 -59,7 +54,7 @@@ struct timer_entry *duplicate_cleanup_t
  
  void olsr_init_duplicate_set(void) {
    avl_init(&duplicate_set, olsr_cnf->ip_version == AF_INET ? &avl_comp_ipv4 : &avl_comp_ipv6);
--  
++
    olsr_set_timer(&duplicate_cleanup_timer, DUPLICATE_CLEANUP_INTERVAL,
       DUPLICATE_CLEANUP_JITTER, OLSR_TIMER_PERIODIC,
       &olsr_cleanup_duplicate_entry, NULL, 0);
@@@ -69,7 -69,7 +64,7 @@@ struct dup_entry *olsr_create_duplicate
    struct dup_entry *entry;
    entry = olsr_malloc(sizeof(struct dup_entry), "New duplicate entry");
    if (entry != NULL) {
--    memcpy (&entry->ip, ip, olsr_cnf->ip_version == AF_INET ? sizeof(entry->ip.v4) : sizeof(entry->ip.v6)); 
++    memcpy (&entry->ip, ip, olsr_cnf->ip_version == AF_INET ? sizeof(entry->ip.v4) : sizeof(entry->ip.v6));
      entry->seqnr = seqnr;
      entry->too_low_counter = 0;
      entry->avl.key = &entry->ip;
@@@ -79,7 -79,7 +74,7 @@@
  
  static void olsr_cleanup_duplicate_entry(void __attribute__ ((unused)) *unused) {
    struct dup_entry *entry;
--  
++
    OLSR_FOR_ALL_DUP_ENTRIES(entry) {
      if (TIMED_OUT(entry->valid_until)) {
        avl_delete(&duplicate_set, &entry->avl);
@@@ -93,18 -93,18 +88,18 @@@ int olsr_shall_process_message(void *ip
    int diff;
    void *mainIp;
    clock_t valid_until;
--  
++
  #ifndef NODEBUG
    struct ipaddr_str buf;
--#endif  
++#endif
    // get main address
    mainIp = mid_lookup_main_addr(ip);
    if (mainIp == NULL) {
      mainIp = ip;
    }
--  
++
    valid_until = GET_TIMESTAMP(DUPLICATE_VTIME);
--  
++
    entry = (struct dup_entry *)avl_find(&duplicate_set, ip);
    if (entry == NULL) {
      entry = olsr_create_duplicate_entry(ip, seqnr);
    }
  
    diff = (int)seqnr - (int)(entry->seqnr);
--  
++
    // update timestamp
    if (valid_until > entry->valid_until) {
      entry->valid_until = valid_until;
    }
--  
++
    // overflow ?
    if (diff > (1<<15)) {
      diff -= (1<<16);
    }
--  
++
    if (diff < -31) {
      entry->too_low_counter ++;
--    
++
      // client did restart with a lower number ?
      if (entry->too_low_counter > 16) {
        entry->too_low_counter = 0;
      OLSR_PRINTF(9, "blocked %x from %s\n", seqnr, olsr_ip_to_string(&buf, mainIp));
      return 0;
    }
--  
++
    entry->too_low_counter = 0;
    if (diff <= 0) {
      olsr_u32_t bitmask = 1 << ((olsr_u32_t) (-diff));
--    
++
      if ((entry->array & bitmask) != 0) {
        OLSR_PRINTF(9, "blocked %x (diff=%d,mask=%08x) from %s\n", seqnr, diff, entry->array, olsr_ip_to_string(&buf, mainIp));
        return 0;
@@@ -171,7 -171,7 +166,7 @@@ void olsr_print_duplicate_table(void) 
    struct dup_entry *entry;
    const int ipwidth = olsr_cnf->ip_version == AF_INET ? 15 : 30;
    struct ipaddr_str addrbuf;
--  
++
    OLSR_PRINTF(1,
          "\n--- %s ------------------------------------------------- DUPLICATE SET\n\n"
          "%-*s %8s %s\n", olsr_wallclock_string(), ipwidth,
@@@ -1,38 -1,38 +1,33 @@@
  /*
   * The olsr.org Optimized Link-State Routing daemon(olsrd)
--<<<<<<< /home/rogge/develop/olsrd/olsrd-linkset-refactoring/src/duplicate_set.h
   * Copyright (c) 2008 Henning Rogge <rogge@fgan.de>
--=======
-- * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
-- * Copyright (c) 2008 Henning Rogge <rogge@fgan.de>
-->>>>>>> /tmp/duplicate_set.h~other.fO3lgV
   * All rights reserved.
   *
-- * Redistribution and use in source and binary forms, with or without 
-- * modification, are permitted provided that the following conditions 
++ * 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 
++ * * 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 
++ * * 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 
++ * * 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 
++ * 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.