src/routing/olsr/olsr.h
author Andrey Mazo <mazo@iitp.ru>
Fri, 23 Apr 2010 15:09:31 +0400
changeset 6273 8d70de29d514
parent 5924 1e6ba48a48ea
child 6346 bbea3da9679b
permissions -rw-r--r--
spell check, mostly in comments.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1733
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     2
/*
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     3
 * Copyright (c) 2007 INESC Porto
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     4
 *
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     8
 *
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    12
 * GNU General Public License for more details.
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    13
 *
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    17
 *
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    18
 * Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    19
 */
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    20
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    21
#ifndef OLSR_H
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    22
#define OLSR_H
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    23
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    24
/**
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    25
 * \ingroup routing
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    26
 * \defgroup olsr OLSR
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    27
 *
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    28
 * \section model Model
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    29
 *
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    30
 * This model implements the base specification of the Optimized
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    31
 * Link State Routing (OLSR) protocol, which is a dynamic mobile ad hoc
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    32
 * unicast routing protocol.  It has been developed at the 
3265
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    33
 * University of Murcia (Spain) by Francisco J. Ros for NS-2, and was
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    34
 * ported to NS-3 by Gustavo Carneiro at INESC Porto (Portugal).
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    35
 *
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    36
 * Here is a summary of software's main features:
3265
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    37
 * - Mostly compliant with OLSR as documented in RFC 3626 (http://www.ietf.org/rfc/rfc3626.txt), with the following differences:
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    38
 *  - The use of multiple interfaces was not supported by the NS-2 version, but is supported in NS-3;
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    39
 *
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    40
 * \section api API and Usage
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    41
 * 
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    42
 * A helper class for OLSR has been written.  After an IPv4 topology
3265
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    43
 * has been created and unique IP addresses assigned to each node, the
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    44
 * simulation script writer can call one of three overloaded functions
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    45
 * with different scope to enable OLSR: ns3::OlsrHelper::Install
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    46
 * (NodeContainer container); ns3::OlsrHelper::Install (Ptr<Node>
789dd0f5ca94 Correct the OLSR documentation; remove dead API declarations and source file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3263
diff changeset
    47
 * node); or ns3::OlsrHelper::InstallAll (void);
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    48
 *
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    49
 * In addition, the behavior of OLSR can be modified by changing certain
5867
8c65da328ae9 Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3265
diff changeset
    50
 * attributes.  The method ns3::OlsrHelper::Set () can be used
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    51
 * to set OLSR attributes.  These include HelloInterval, TcInterval,
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    52
 * MidInterval, Willingness.  Other parameters are defined as macros
5867
8c65da328ae9 Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3265
diff changeset
    53
 * in olsr-routing-protocol.cc.
5924
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    54
 *
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    55
 * \section list Open Issues
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    56
 *
6273
8d70de29d514 spell check, mostly in comments.
Andrey Mazo <mazo@iitp.ru>
parents: 5924
diff changeset
    57
 * - OLSR does not respond to the routing event notifications corresponding
5924
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    58
 * to dynamic interface up and down (RoutingProtocol::NotifyInterfaceUp and
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    59
 * RoutingProtocol::NotifyInterfaceDown) or address insertion/removal
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    60
 * (RoutingProtocol::NotifyAddAddress and 
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    61
 * RoutingProtocol::NotifyRemoveAddress).
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    62
 * - HNA (Host/Network Association) messages are almost-but-not-quite supported in this version.
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    63
 * - Unlike the NS-2 version, does not yet support MAC layer feedback as described in RFC 3626;
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    64
 * - If a user binds a socket to a particular output device, OLSR will not
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    65
 * consider that constraint in its route selection for locally originated
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    66
 * packets
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    67
 *   
1e6ba48a48ea Update error model and olsr doxygen
Tom Henderson <tomh@tomh.org>
parents: 5867
diff changeset
    68
 * 
3263
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    69
 */
ef2285c91aeb OLSR doxygen
Tom Henderson <tomh@tomh.org>
parents: 1778
diff changeset
    70
1735
9675c6b5452c Patch from Mathieu, makes EnableNodes templated
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1734
diff changeset
    71
1733
9552d9836732 Add a simpler olsr::EnableAllNodes API as suggested by Mathieu.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    72
#endif /* OLSR_H */