src/node/ipv4-address.h
author Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
Wed, 18 Jul 2007 11:43:39 +0100
changeset 933 df68dad55087
parent 784 a3f6b5783790
child 934 1bfcc65213c7
child 1724 24c7eee5a1ff
permissions -rw-r--r--
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
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) 2005 INRIA
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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
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
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#ifndef IPV4_ADDRESS_H
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#define IPV4_ADDRESS_H
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include <stdint.h>
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include <ostream>
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
namespace ns3 {
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
933
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    30
class Ipv4Mask;
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    31
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    32
/** Ipv4 addresses are stored in host order in
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    33
  * this class.
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    34
  */
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
class Ipv4Address {
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
public:
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  Ipv4Address ();
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    38
  /**
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    39
   * input address is in host order.
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    40
   * \param address The host order 32-bit address
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    41
   */
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  Ipv4Address (uint32_t address);
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    43
  /** 
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    44
    * \brief Constructs an Ipv4Address by parsing a the input C-string
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    45
    *
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    46
    * Input address is in format:
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    47
    * hhh.xxx.xxx.lll
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    48
    * where h is the high byte and l the
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    49
    * low byte
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    50
    * \param address C-string containing the address as described above
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    51
    */
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    52
  Ipv4Address (char const *address);
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    53
  
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    54
  /**
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    55
   * \brief Comparison operation between two Ipv4Addresses
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    56
   * \param other address to which to compare this address
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    57
   * \return True if the addresses are equal. False otherwise.
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
  bool IsEqual (Ipv4Address other) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    61
  /** 
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    62
   * \brief Get the host-order 32-bit IP address
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    63
   *
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    64
   * Using this method is frowned upon.
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
   * Please, do _not_ use this method.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
   * It is there only for chunk-ipv4.
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    67
   * \return the host-order 32-bit IP address
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
   */
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  uint32_t GetHostOrder (void) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  void SetHostOrder (uint32_t ip);
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    71
  /**
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    72
   * Serialize this address to a 4-byte buffer
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    73
   * \param buf output buffer to which this address gets overwritten with this
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    74
   * Ipv4Address
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    75
   */
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
  void Serialize (uint8_t buf[4]) const;
625
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    77
  /**
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    78
   * \brief Print this address to the given output stream
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    79
   *
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    80
   * The print format is in the typical "192.168.1.1"
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    81
   * \param os The output stream to which this Ipv4Address is printed
12fa3d0c4f94 droptail and ipv4address dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 256
diff changeset
    82
   */
256
8978ff0dc351 replace pointer with reference
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 234
diff changeset
    83
  void Print (std::ostream &os) const;
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
933
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    85
  bool IsBroadcast (void) const;
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
  bool IsMulticast (void);
933
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    87
  
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    88
  /**
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    89
   * \brief Combine this address with a network mask
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    90
   *
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    91
   * This method returns an IPv4 address that is this address combined
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    92
   * (bitwise and) with a network mask, yielding an IPv4 network
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    93
   * address.
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    94
   *
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    95
   * \param a network mask 
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    96
   */
df68dad55087 WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 784
diff changeset
    97
  Ipv4Address CombineMask (Ipv4Mask const &mask) const;
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  static Ipv4Address GetZero (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  static Ipv4Address GetAny (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  static Ipv4Address GetBroadcast (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
  static Ipv4Address GetLoopback (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
private:
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  uint32_t m_address;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
};
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
class Ipv4Mask {
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
public:
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  Ipv4Mask ();
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  Ipv4Mask (uint32_t mask);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  Ipv4Mask (char const *mask);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
  bool IsMatch (Ipv4Address a, Ipv4Address b) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  bool IsEqual (Ipv4Mask other) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  /* Using this method is frowned upon.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
   * Please, do _not_ use this method.
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
   */
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
  uint32_t GetHostOrder (void) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
  void SetHostOrder (uint32_t value);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
256
8978ff0dc351 replace pointer with reference
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 234
diff changeset
   125
  void Print (std::ostream &os) const;
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  static Ipv4Mask GetLoopback (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  static Ipv4Mask GetZero (void);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
private:
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  uint32_t m_mask;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
};
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
std::ostream& operator<< (std::ostream& os, Ipv4Address const& address);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
std::ostream& operator<< (std::ostream& os, Ipv4Mask const& mask);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
bool operator == (Ipv4Address const &a, Ipv4Address const &b);
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
bool operator != (Ipv4Address const &a, Ipv4Address const &b);
784
a3f6b5783790 Add Ipv4Address operator <, to allow Ipv4Address to be used in std::set; Closes #39.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 782
diff changeset
   138
bool operator < (Ipv4Address const &addrA, Ipv4Address const &addrB);
a3f6b5783790 Add Ipv4Address operator <, to allow Ipv4Address to be used in std::set; Closes #39.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 782
diff changeset
   139
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
class Ipv4AddressHash : public std::unary_function<Ipv4Address, size_t> {
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
public:
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  size_t operator()(Ipv4Address const &x) const;
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
};
782
ca907fdc28fb Add Ipv4Mask == and != operators, similarly to Ipv4Address.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 625
diff changeset
   144
ca907fdc28fb Add Ipv4Mask == and != operators, similarly to Ipv4Address.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 625
diff changeset
   145
bool operator == (Ipv4Mask const &a, Ipv4Mask const &b);
ca907fdc28fb Add Ipv4Mask == and != operators, similarly to Ipv4Address.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 625
diff changeset
   146
bool operator != (Ipv4Mask const &a, Ipv4Mask const &b);
234
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
}; // namespace ns3
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
6124bda39cb3 code from all trees.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
#endif /* IPV4_ADDRESS_H */