00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef IPV4_ROUTE_H
00021 #define IPV4_ROUTE_H
00022
00023 #include <list>
00024 #include <vector>
00025 #include <ostream>
00026
00027 #include "ipv4-address.h"
00028
00029 namespace ns3 {
00030
00031
00032
00033
00034 class Ipv4Route {
00035 public:
00036
00037
00038
00039 Ipv4Route ();
00040
00041
00042
00043
00044
00045 Ipv4Route (Ipv4Route const &route);
00046
00047
00048
00049
00050
00051 Ipv4Route (Ipv4Route const *route);
00052
00053 bool IsHost (void) const;
00054
00055
00056
00057 Ipv4Address GetDest (void) const;
00058
00059 bool IsNetwork (void) const;
00060 Ipv4Address GetDestNetwork (void) const;
00061 Ipv4Mask GetDestNetworkMask (void) const;
00062
00063
00064
00065 bool IsDefault (void) const;
00066
00067 bool IsGateway (void) const;
00068 Ipv4Address GetGateway (void) const;
00069
00070 uint32_t GetInterface (void) const;
00071
00072 static Ipv4Route CreateHostRouteTo (Ipv4Address dest,
00073 Ipv4Address nextHop,
00074 uint32_t interface);
00075 static Ipv4Route CreateHostRouteTo (Ipv4Address dest,
00076 uint32_t interface);
00077 static Ipv4Route CreateNetworkRouteTo (Ipv4Address network,
00078 Ipv4Mask networkMask,
00079 Ipv4Address nextHop,
00080 uint32_t interface);
00081 static Ipv4Route CreateNetworkRouteTo (Ipv4Address network,
00082 Ipv4Mask networkMask,
00083 uint32_t interface);
00084 static Ipv4Route CreateDefaultRoute (Ipv4Address nextHop,
00085 uint32_t interface);
00086
00087 private:
00088 Ipv4Route (Ipv4Address network,
00089 Ipv4Mask mask,
00090 Ipv4Address gateway,
00091 uint32_t interface);
00092 Ipv4Route (Ipv4Address dest,
00093 Ipv4Mask mask,
00094 uint32_t interface);
00095 Ipv4Route (Ipv4Address dest,
00096 Ipv4Address gateway,
00097 uint32_t interface);
00098 Ipv4Route (Ipv4Address dest,
00099 uint32_t interface);
00100
00101 Ipv4Address m_dest;
00102 Ipv4Mask m_destNetworkMask;
00103 Ipv4Address m_gateway;
00104 uint32_t m_interface;
00105 };
00106
00107 std::ostream& operator<< (std::ostream& os, Ipv4Route const& route);
00108
00109
00110
00111
00112
00113 class Ipv4MulticastRoute {
00114 public:
00115
00116
00117
00118 Ipv4MulticastRoute ();
00119
00120
00121
00122
00123
00124 Ipv4MulticastRoute (Ipv4MulticastRoute const &route);
00125
00126
00127
00128
00129
00130 Ipv4MulticastRoute (Ipv4MulticastRoute const *route);
00131
00132
00133
00134
00135 Ipv4Address GetOrigin (void) const;
00136
00137
00138
00139
00140 Ipv4Address GetGroup (void) const;
00141
00142
00143
00144
00145 uint32_t GetInputInterface (void) const;
00146
00147
00148
00149
00150 uint32_t GetNOutputInterfaces (void) const;
00151
00152
00153
00154
00155 uint32_t GetOutputInterface (uint32_t n) const;
00156
00157
00158
00159
00160 std::vector<uint32_t> GetOutputInterfaces (void) const;
00161
00162 static Ipv4MulticastRoute CreateMulticastRoute (Ipv4Address origin,
00163 Ipv4Address group, uint32_t inputInterface,
00164 std::vector<uint32_t> outputInterfaces);
00165
00166 private:
00167 Ipv4MulticastRoute (Ipv4Address origin, Ipv4Address group,
00168 uint32_t inputInterface, std::vector<uint32_t> outputInterfaces);
00169
00170 Ipv4Address m_origin;
00171 Ipv4Address m_group;
00172 uint32_t m_inputInterface;
00173 std::vector<uint32_t> m_outputInterfaces;
00174 };
00175
00176 std::ostream& operator<< (std::ostream& os, Ipv4MulticastRoute const& route);
00177
00178 }
00179
00180 #endif