00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef IPV4_END_POINT_H
00022 #define IPV4_END_POINT_H
00023
00024 #include <stdint.h>
00025 #include "ns3/ipv4-address.h"
00026 #include "ns3/callback.h"
00027
00028 namespace ns3 {
00029
00030 class Header;
00031 class Packet;
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 class Ipv4EndPoint {
00045 public:
00046 Ipv4EndPoint (Ipv4Address address, uint16_t port);
00047 ~Ipv4EndPoint ();
00048
00049 Ipv4Address GetLocalAddress (void);
00050 void SetLocalAddress (Ipv4Address address);
00051 uint16_t GetLocalPort (void);
00052 Ipv4Address GetPeerAddress (void);
00053 uint16_t GetPeerPort (void);
00054
00055 void SetPeer (Ipv4Address address, uint16_t port);
00056
00057
00058 void SetRxCallback (Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> callback);
00059 void SetIcmpCallback (Callback<void,Ipv4Address,uint8_t,uint8_t,uint8_t,uint32_t> callback);
00060 void SetDestroyCallback (Callback<void> callback);
00061
00062
00063
00064 void ForwardUp (Ptr<Packet> p, Ipv4Address saddr, uint16_t sport);
00065
00066
00067 void ForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl,
00068 uint8_t icmpType, uint8_t icmpCode,
00069 uint32_t icmpInfo);
00070
00071 private:
00072 void DoForwardUp (Ptr<Packet> p, Ipv4Address saddr, uint16_t sport);
00073 void DoForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl,
00074 uint8_t icmpType, uint8_t icmpCode,
00075 uint32_t icmpInfo);
00076 Ipv4Address m_localAddr;
00077 uint16_t m_localPort;
00078 Ipv4Address m_peerAddr;
00079 uint16_t m_peerPort;
00080 Callback<void,Ptr<Packet>, Ipv4Address, uint16_t> m_rxCallback;
00081 Callback<void,Ipv4Address,uint8_t,uint8_t,uint8_t,uint32_t> m_icmpCallback;
00082 Callback<void> m_destroyCallback;
00083 };
00084
00085 };
00086
00087
00088 #endif