00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef ACE_ICMP_SOCKET_H
00015 #define ACE_ICMP_SOCKET_H
00016
00017 #include "ace/pre.h"
00018
00019 #include "ace/ACE_export.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #if defined (ACE_HAS_ICMP_SUPPORT) && (ACE_HAS_ICMP_SUPPORT == 1)
00026
00027 #include "ace/SOCK.h"
00028 #include "ace/Time_Value.h"
00029 #include "ace/os_include/netinet/os_in.h"
00030
00031 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00032
00033
00034
00035
00036
00037
00038
00039 class ACE_Export ACE_ICMP_Socket : public ACE_SOCK
00040 {
00041 public:
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 ssize_t send (void const * buf,
00054 size_t n,
00055 ACE_Addr const & addr,
00056 int flags = 0) const;
00057
00058
00059
00060 ssize_t recv (void * buf,
00061 size_t n,
00062 ACE_Addr & addr,
00063 int flags = 0) const;
00064
00065
00066 ssize_t recv (void * buf,
00067 size_t n,
00068 int flags,
00069 ACE_Time_Value const * timeout) const;
00070
00071
00072
00073
00074 int open (ACE_Addr const & local = ACE_Addr::sap_any,
00075 int protocol = IPPROTO_ICMP,
00076 int reuse_addr = 0);
00077
00078
00079 void dump (void) const;
00080
00081
00082 ACE_ALLOC_HOOK_DECLARE;
00083
00084 protected:
00085
00086
00087
00088
00089 ACE_ICMP_Socket (void);
00090
00091
00092 ACE_ICMP_Socket (ACE_Addr const & local,
00093 int protocol = IPPROTO_ICMP,
00094 int reuse_addr = 0);
00095
00096
00097 int shared_open (ACE_Addr const & local);
00098
00099
00100 unsigned short calculate_checksum (unsigned short* paddress,
00101 int len);
00102 };
00103
00104 ACE_END_VERSIONED_NAMESPACE_DECL
00105
00106 #endif
00107
00108 #include "ace/post.h"
00109
00110 #endif