src/internet-node/internet-node.h
author Tom Henderson <tomh@tomh.org>
Thu, 10 Jan 2008 07:31:40 -0800
changeset 2217 0b4567d545de
parent 2200 cc3c72489498
child 2498 e01570293b98
permissions -rw-r--r--
Doxygen organization
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
// -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*-
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
// Copyright (c) 2006 Georgia Tech Research Corporation
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
// All rights reserved.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
// This program is free software; you can redistribute it and/or modify
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
// it under the terms of the GNU General Public License version 2 as
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
// published by the Free Software Foundation;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
// This program is distributed in the hope that it will be useful,
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
// GNU General Public License for more details.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
// You should have received a copy of the GNU General Public License
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
// along with this program; if not, write to the Free Software
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
// Author: George F. Riley<riley@ece.gatech.edu>
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
//
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
// Define a basic "Internet" node, with a protocol stack (l3 and l4),
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
// network device list, process list, and routing.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
731
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    24
#ifndef INTERNET_NODE_H
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    25
#define INTERNET_NODE_H
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
#include <list>
308
768db459baaa Added tracing support to simple.tcl.cc (Craig)
tomh@ubuntu
parents: 295
diff changeset
    28
#include <string>
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
729
b5e744285e92 rename i-node to node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 728
diff changeset
    30
#include "ns3/node.h"
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
namespace ns3 {
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
2200
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    34
/**
2217
0b4567d545de Doxygen organization
Tom Henderson <tomh@tomh.org>
parents: 2200
diff changeset
    35
 * \ingroup internetNode
2200
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    36
 *
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    37
 * \section InternetNode Overview
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    38
 *
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    39
 * The InternetNode module contains an implementation of TCP, UDP, and
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    40
 * IPv4.  ns-3 Applications sit above this module, and ns-3 NetDevices
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    41
 * sit below it...
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    42
 *
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    43
 * InternetNode is implemented as a subclass of Node but this may be
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    44
 * refactored in the future to 
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    45
 */
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    46
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    47
/*
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    48
 * \brief Container class for various TCP/IP objects and interfaces
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    49
 * aggregated to a Node.
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    50
 *
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    51
 * This class exists primarily to assemble the layer-3/4 stack of a Node 
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    52
 * from constituent parts, including implementations of TCP, IPv4, UDP, 
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    53
 * and ARP.  It provides only constructors and destructors as its public
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    54
 * API.  Internally, the various protocols are instantiated, aggregated
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    55
 * to a Node, and plumbed together.
cc3c72489498 Doxygen for internet-node.h
Tom Henderson <tomh@tomh.org>
parents: 1866
diff changeset
    56
 */
731
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    57
class InternetNode : public Node 
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
{
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
public:
731
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    60
  InternetNode();
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    61
  InternetNode(uint32_t systemId);
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    62
  virtual ~InternetNode ();
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
513
b7c7ea629de9 make L3Demux an NsUnknown object.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 482
diff changeset
    64
protected:
b7c7ea629de9 make L3Demux an NsUnknown object.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 482
diff changeset
    65
  virtual void DoDispose(void);
1383
12f30b7defb4 constify
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1341
diff changeset
    66
  virtual Ptr<TraceResolver> GetTraceResolver (void) const;
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
private:
605
3a62e5c4de75 rename internet-node.h to i-node-impl.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 604
diff changeset
    68
  void Construct (void);
242
a44932709b47 add arp stack
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 241
diff changeset
    69
};
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
}//namespace ns3
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
731
c37436811d6f remove MakeInternetNode
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 729
diff changeset
    73
#endif /* INTERNET_NODE_H */