src/node/inet-socket-address.h
author Florian Westphal <fw@strlen.de>
Wed, 03 Sep 2008 23:24:59 +0200
changeset 3595 693faf7f4e9b
parent 3183 fc3b2e03e61e
child 5227 ecb08c1fc273
permissions -rw-r--r--
nsc: Fix build problem if gtk config store is disabled gtk config store pulled in libdl.so for us, so things fail to link of the config store isn't enabled. This makes nsc pull in libdl itself when its enabled.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1297
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     2
/*
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     3
 * Copyright (c) 2005 INRIA
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     4
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     7
 * published by the Free Software Foundation;
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     8
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    12
 * GNU General Public License for more details.
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    13
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    14
 * You should have received a copy of the GNU General Public License
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    15
 * along with this program; if not, write to the Free Software
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    17
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    19
 */
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    20
1298
2cc1e5ed958c Fixed inet-socket-address's opening IFDEF to be consistent with the filename
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1297
diff changeset
    21
#ifndef INET_SOCKET_ADDRESS_H
2cc1e5ed958c Fixed inet-socket-address's opening IFDEF to be consistent with the filename
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1297
diff changeset
    22
#define INET_SOCKET_ADDRESS_H
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "address.h"
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "ipv4-address.h"
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include <stdint.h>
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
namespace ns3 {
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    30
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    31
/**
3183
fc3b2e03e61e more doxygen
Tom Henderson <tomh@tomh.org>
parents: 2834
diff changeset
    32
 * \ingroup address
fc3b2e03e61e more doxygen
Tom Henderson <tomh@tomh.org>
parents: 2834
diff changeset
    33
 *
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    34
 * \brief an Inet address class
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    35
 *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    36
 * This class is similar to inet_sockaddr in the BSD socket
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    37
 * API. i.e., this class holds an Ipv4Address and a port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    38
 * to form an ipv4 transport endpoint.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    39
 */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    40
class InetSocketAddress
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
public:
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    43
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    44
   * \param ipv4 the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    45
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    46
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    47
  InetSocketAddress (Ipv4Address ipv4, uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    48
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    49
   * \param ipv4 the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    50
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    51
   * The port number is set to zero by default.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    52
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    53
  InetSocketAddress (Ipv4Address ipv4);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    54
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    55
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    56
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    57
   * The ipv4 address is set to the "Any" address by default.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    58
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    59
  InetSocketAddress (uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    60
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    61
   * \param ipv4 string which represents an ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    62
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    63
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    64
  InetSocketAddress (const char *ipv4, uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    65
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    66
   * \param ipv4 string which represents an ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    67
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    68
   * The port number is set to zero.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    69
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    70
  InetSocketAddress (const char *ipv4);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    71
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    72
   * \returns the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    73
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
  uint16_t GetPort (void) const;
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    75
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    76
   * \returns the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    77
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  Ipv4Address GetIpv4 (void) const;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    80
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    81
   * \param port the new port number.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    82
   */
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    83
  void SetPort (uint16_t port);
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    84
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    85
   * \param address the new ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    86
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  void SetIpv4 (Ipv4Address address);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
1174
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    89
  /**
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    90
   * \returns true if the address matches, false otherwise.
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    91
   */
1172
2e5b994330c7 add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1171
diff changeset
    92
  static bool IsMatchingType (const Address &address);
2e5b994330c7 add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1171
diff changeset
    93
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    94
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    95
   * \returns an Address instance which represents this
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    96
   * InetSocketAddress instance.
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    97
   */
1204
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
    98
  operator Address () const;
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
    99
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   100
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   101
   * \param address the Address instance to convert from.
1204
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
   102
   *
1207
a9f3610bbffa remove implicit conversion from Address to Eui48Address, to Ipv4Address and to InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1204
diff changeset
   103
   * Returns an InetSocketAddress which corresponds to the input
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   104
   * Address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   105
   */
1207
a9f3610bbffa remove implicit conversion from Address to Eui48Address, to Ipv4Address and to InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1204
diff changeset
   106
  static InetSocketAddress ConvertFrom (const Address &address);
1204
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
   107
private:
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
   108
  Address ConvertTo (void) const;
1207
a9f3610bbffa remove implicit conversion from Address to Eui48Address, to Ipv4Address and to InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1204
diff changeset
   109
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  static uint8_t GetType (void);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  Ipv4Address m_ipv4;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  uint16_t m_port;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
};
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
} // namespace ns3
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
1298
2cc1e5ed958c Fixed inet-socket-address's opening IFDEF to be consistent with the filename
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1297
diff changeset
   118
#endif /* INET_SOCKET_ADDRESS_H */