src/node/inet-socket-address.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 30 Aug 2007 14:35:44 +0200
changeset 1401 96a21130865c
parent 1298 2cc1e5ed958c
child 2834 1aab57845b07
permissions -rw-r--r--
GetName -> GetTypeName
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
 * All rights reserved.
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     5
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
     6
 * 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
     7
 * 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
     8
 * 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
     9
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    10
 * 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
    11
 * 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
    12
 * 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
    13
 * 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
    14
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    15
 * 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
    16
 * 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
    17
 * 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
    18
 *
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    19
 * 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
    20
 */
e30ce531faf3 Added GPL and emacs modeline to inet-socket-address.h/cc
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1207
diff changeset
    21
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
    22
#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
    23
#define INET_SOCKET_ADDRESS_H
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "address.h"
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "ipv4-address.h"
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
#include <stdint.h>
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
namespace ns3 {
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    31
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    32
/**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    33
 * \brief an Inet address class
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    34
 *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    35
 * 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
    36
 * 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
    37
 * to form an ipv4 transport endpoint.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    38
 */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    39
class InetSocketAddress
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
{
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
public:
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    42
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    43
   * \param ipv4 the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    44
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    45
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    46
  InetSocketAddress (Ipv4Address ipv4, uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    47
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    48
   * \param ipv4 the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    49
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    50
   * The port number is set to zero by default.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    51
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    52
  InetSocketAddress (Ipv4Address ipv4);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    53
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    54
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    55
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    56
   * 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
    57
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    58
  InetSocketAddress (uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    59
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    60
   * \param ipv4 string which represents an ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    61
   * \param port the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    62
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    63
  InetSocketAddress (const char *ipv4, uint16_t port);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    64
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    65
   * \param ipv4 string which represents an ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    66
   *
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    67
   * The port number is set to zero.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    68
   */
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    69
  InetSocketAddress (const char *ipv4);
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    70
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    71
   * \returns the port number
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    72
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  uint16_t GetPort (void) const;
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    74
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    75
   * \returns the ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    76
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
  Ipv4Address GetIpv4 (void) const;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    79
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    80
   * \param port the new port number.
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    81
   */
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    82
  void SetPort (uint16_t port);
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    83
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    84
   * \param address the new ipv4 address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    85
   */
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
  void SetIpv4 (Ipv4Address address);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
1174
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    88
  /**
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    89
   * \returns true if the address matches, false otherwise.
e931ef589bb4 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1172
diff changeset
    90
   */
1172
2e5b994330c7 add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1171
diff changeset
    91
  static bool IsMatchingType (const Address &address);
2e5b994330c7 add InetSocketAddress::IsMatchingType and use it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1171
diff changeset
    92
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    93
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    94
   * \returns an Address instance which represents this
1171
335886fe4ddd InetAddress -> InetSocketAddress
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1166
diff changeset
    95
   * InetSocketAddress instance.
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    96
   */
1204
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
    97
  operator Address () const;
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
    98
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
    99
  /**
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   100
   * \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
   101
   *
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
   102
   * Returns an InetSocketAddress which corresponds to the input
1166
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   103
   * Address
878f546b21e1 add doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1165
diff changeset
   104
   */
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
   105
  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
   106
private:
d40723d53e3d InetSocketAddress: replace explicit conversion to implicit conversion
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1174
diff changeset
   107
  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
   108
1158
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
  static uint8_t GetType (void);
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  Ipv4Address m_ipv4;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  uint16_t m_port;
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
};
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
} // namespace ns3
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
12d68dff3353 new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
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
   117
#endif /* INET_SOCKET_ADDRESS_H */