diff options
author | crodrigu <crodrigu@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-11-22 10:32:46 +0000 |
---|---|---|
committer | crodrigu <crodrigu@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-11-22 10:32:46 +0000 |
commit | 3f72e62677380addd3ba8bdc927958ae3b3a5bd9 (patch) | |
tree | 2da3663600a9217bee1eda0e3c18bb09ab21b072 /examples | |
parent | d06f783541ed881455d7a7e40cb2dc3cc25bf687 (diff) | |
download | ATCD-3f72e62677380addd3ba8bdc927958ae3b3a5bd9.tar.gz |
ChangeLogTag: Thu Nov 22 05:24:51 2001 Craig Rodrigues <crodrigu@bbn.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/QOS/Diffserv/Makefile | 35 | ||||
-rw-r--r-- | examples/QOS/Diffserv/NOTES.txt | 58 | ||||
-rw-r--r-- | examples/QOS/Diffserv/README | 104 | ||||
-rw-r--r-- | examples/QOS/Diffserv/diffserv_test.cpp | 133 | ||||
-rwxr-xr-x | examples/QOS/Diffserv/run_test.pl | 40 | ||||
-rw-r--r-- | examples/QOS/Diffserv/server.cpp | 163 | ||||
-rw-r--r-- | examples/QOS/Makefile | 296 |
7 files changed, 535 insertions, 294 deletions
diff --git a/examples/QOS/Diffserv/Makefile b/examples/QOS/Diffserv/Makefile new file mode 100644 index 00000000000..cba0ef6f817 --- /dev/null +++ b/examples/QOS/Diffserv/Makefile @@ -0,0 +1,35 @@ +# $Id$ + +#---------------------------------------------------------------------------- +# Local macros +#---------------------------------------------------------------------------- + +BIN = diffserv_test server + +VLDLIBS = $(LDLIBS:%=%$(VAR)) + +BUILD = $(VBIN) + +LSRC=$(addsuffix .cpp,$(BIN)) + +#---------------------------------------------------------------------------- +# Include macros and targets +#---------------------------------------------------------------------------- + +include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU +include $(ACE_ROOT)/include/makeinclude/macros.GNU +include $(ACE_ROOT)/include/makeinclude/rules.common.GNU +include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU +include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU +include $(ACE_ROOT)/include/makeinclude/rules.local.GNU + +#---------------------------------------------------------------------------- +# Local targets +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Dependencies +#---------------------------------------------------------------------------- + +# DO NOT DELETE THIS LINE -- g++dep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. diff --git a/examples/QOS/Diffserv/NOTES.txt b/examples/QOS/Diffserv/NOTES.txt new file mode 100644 index 00000000000..4e73c66af0f --- /dev/null +++ b/examples/QOS/Diffserv/NOTES.txt @@ -0,0 +1,58 @@ +# $Id$ + +Linux notes +=========== + +Under Linux kernel 2.4, the following DSCP values +could not be set with the setsockopt call +unless you run as root: + +EF, CS5, CS6, CS7 + +Also, under Linux 2.4.2 kernel, if I could successfully +set the 2 bits reserved for ECN in the Diffserv Field to +0x00 or 0x02. However, the setsockopt call would +fail if it was set to 0x01 or 0x03. + +According to the Linux Diffserv mailing list: +http://diffserv.sourceforge.net +http://www.geocrawler.com/archives/3/11111/2001/10/0/6761099/ + +=========================================================================== +On Fri, Oct 05, 2001 at 08:18:06AM +0300, Pekka Savola wrote: +> On Tue, 2 Oct 2001, Craig Rodrigues wrote: +> > Can someone shed some light as to why I got this +> > error under Linux? Is it configuration problem, +> > or is there some sort of policy decision in the kernel that +> > requires the process to be run as root when setting +> > those DSCP values? +> +> A part of DSCP field was previously Precedence. +> +> Linux has required that in order to use 'Critical' or higher Precedence, +> one must have CAP_NET_ADMIN capability, in most cases, root. +> +> I'm not one to say whether this restriction should be removed. Perhaps. +> +> -- +> Pekka Savola "Tell me of difficulties surmounted, +> Netcore Oy not those you stumble over and fall" +> Systems. Networks. Security. -- Robert Jordan: A Crown of Swords +> +=========================================================================== + +FreeBSD notes +============= +Under FreeBSD 4.3, I encountered no problems +setting DSCP or ECN values, and I could set all +these values without being root. +However, FreeBSD seems to be more fussy about the size of the parameter +you pass into the setsockopt call. Make sure you get the +size right, and cast it properly, ie. don't cast a short, or some +other size. + + +Solaris notes +============= +No problems setting DSCP or ECN values. + diff --git a/examples/QOS/Diffserv/README b/examples/QOS/Diffserv/README new file mode 100644 index 00000000000..a15b2f2489c --- /dev/null +++ b/examples/QOS/Diffserv/README @@ -0,0 +1,104 @@ +This directory contains an example which +tests the setting of the Diffserv Codepoint (DSCP) +values in the +IP TOS field of a stream of UDP packets. + +Running the example +=================== + +(1) On one host, run: + server [UDP port number] + + If port number is omitted, a default port number of 20002 + is used. + +(2) On a second host, run: + diffserv_test [destination host] [destination port] + + The host and port of where the server is running should + be specified. + + A stream of UDP packets will be sent from to the server, + with various codepoints set. + +(3) Look at the Diffserv Field (formerly known as the TOS field) + of your packets, using a protocol analyzer, such as Ethereal. + + + + +Introduction +============ +In RFC 2474, the Type of Service (TOS) field in +the IP header was renamed the Diffserv (DS) field. +The DS field is one octet (8 bits). + + 0 1 2 3 4 5 6 7 + +---+---+---+---+---+---+---+---+ + | DSCP | ECN | + +---+---+---+---+---+---+---+---+ + +The first 6 bits of the field are +reserved for the Diffserv Codepoint (DSCP). +There are 64 possible values (0-63) for the DSCP. + +Bits 6 and 7 of the DS field are reserved +for Explicit Congestion Notification (ECN). +ECN is defined in RFC 3168. + + +Per-Hop Behaviors (PHB) +======================= + +A Per-Hop Behavior (PHB) is a description of the externally +observable forwarding treatment applied at a differentiated +services compliant node. + +Certain PHB's are defined in RFC's and associated with +different DSCP values. Other values are undefined and left +for experimentation. Please refer to the RFC's for a full +explanation of the attributes of the various PHB's. + + +DSCP value PHB RFC +(binary) +----------------------------------------------------------- +000000 Default (Best Effort) 2474 +001000 Class Selector (CS1) 2474 +010000 Class Selector (CS2) 2474 +011000 Class Selector (CS3) 2474 +100000 Class Selector (CS4) 2474 +101000 Class Selector (CS5) 2474 +110000 Class Selector (CS6) 2474 +111000 Class Selector (CS7) 2474 +001010 Assured Forwarding (AF11) 2597 +001100 Assured Forwarding (AF12) 2597 +001110 Assured Forwarding (AF13) 2597 +010010 Assured Forwarding (AF21) 2597 +010100 Assured Forwarding (AF22) 2597 +010110 Assured Forwarding (AF23) 2597 +011010 Assured Forwarding (AF31) 2597 +011100 Assured Forwarding (AF32) 2597 +011110 Assured Forwarding (AF33) 2597 +100010 Assured Forwarding (AF41) 2597 +100100 Assured Forwarding (AF42) 2597 +100110 Assured Forwarding (AF43) 2597 +101110 Expedited Forwarding (EF) 2598 + + +References +========== +RFC 2474, "Definition of the Differentiated Services (DS Field) + in the IPv4 and IPv6 Headers", http://www.ietf.org/rfc/rfc2474.txt + +RFC 2475, "An Architecture for Differentiated Services", + http://www.ietf.org/rfc/rfc2475.txt + +RFC 2597, "Assured Forwarding PHB Group", http://www.ietf.org/rfc/rfc2597.txt + +RFC 2598, "An Expedited Forwarding PHB", http://www.ietf.org/rfc/rfc2598.txt + +RFC 3168, "The Addition of Explicit Congestion Notification (ECN) + to IP", http://www.ietf.org/rfc/rfc3168.txt + +Ethereal, http://www.ethereal.com diff --git a/examples/QOS/Diffserv/diffserv_test.cpp b/examples/QOS/Diffserv/diffserv_test.cpp new file mode 100644 index 00000000000..ac3acc2ed8f --- /dev/null +++ b/examples/QOS/Diffserv/diffserv_test.cpp @@ -0,0 +1,133 @@ +//============================================================================= +/** + * @file diffserv_test.cpp + * + * $Id$ + * + * @author Craig Rodrigues <crodrigu@bbn.com> + * @brief Send UDP packets to a destination host and port. + * Change the Diffserv field to various values. + */ +//============================================================================= + +#include "ace/Log_Msg.h" +#include "ace/SOCK_CODgram.h" +#include "ace/INET_Addr.h" + +#define IPDSFIELD_DSCP_DEFAULT 0x00 +#define IPDSFIELD_DSCP_CS1 0x08 +#define IPDSFIELD_DSCP_CS2 0x10 +#define IPDSFIELD_DSCP_CS3 0x18 +#define IPDSFIELD_DSCP_CS4 0x20 +#define IPDSFIELD_DSCP_CS5 0x28 +#define IPDSFIELD_DSCP_CS6 0x30 +#define IPDSFIELD_DSCP_CS7 0x38 +#define IPDSFIELD_DSCP_AF11 0x0A +#define IPDSFIELD_DSCP_AF12 0x0C +#define IPDSFIELD_DSCP_AF13 0x0E +#define IPDSFIELD_DSCP_AF21 0x12 +#define IPDSFIELD_DSCP_AF22 0x14 +#define IPDSFIELD_DSCP_AF23 0x16 +#define IPDSFIELD_DSCP_AF31 0x1A +#define IPDSFIELD_DSCP_AF32 0x1C +#define IPDSFIELD_DSCP_AF33 0x1E +#define IPDSFIELD_DSCP_AF41 0x22 +#define IPDSFIELD_DSCP_AF42 0x24 +#define IPDSFIELD_DSCP_AF43 0x26 +#define IPDSFIELD_DSCP_EF 0x2E +#define IPDSFIELD_ECT_MASK 0x02 +#define IPDSFIELD_CE_MASK 0x01 + +int dscp [] = + { + IPDSFIELD_DSCP_DEFAULT , + IPDSFIELD_DSCP_CS1 , + IPDSFIELD_DSCP_CS2 , + IPDSFIELD_DSCP_CS3 , + IPDSFIELD_DSCP_CS4 , + IPDSFIELD_DSCP_CS5 , + IPDSFIELD_DSCP_CS6 , + IPDSFIELD_DSCP_CS7 , + IPDSFIELD_DSCP_AF11 , + IPDSFIELD_DSCP_AF12 , + IPDSFIELD_DSCP_AF13 , + IPDSFIELD_DSCP_AF21 , + IPDSFIELD_DSCP_AF22 , + IPDSFIELD_DSCP_AF23 , + IPDSFIELD_DSCP_AF31 , + IPDSFIELD_DSCP_AF32 , + IPDSFIELD_DSCP_AF33 , + IPDSFIELD_DSCP_AF41 , + IPDSFIELD_DSCP_AF42 , + IPDSFIELD_DSCP_AF43 , + IPDSFIELD_DSCP_EF + }; + +const char *dscp_char[]= + { + "Normal", + "CS1", + "CS2", + "CS3", + "CS4", + "CS5", + "CS6", + "CS7", + "Assured Forwarding 11", + "Assured Forwarding 12", + "Assured Forwarding 13", + "Assured Forwarding 21", + "Assured Forwarding 22", + "Assured Forwarding 23", + "Assured Forwarding 31", + "Assured Forwarding 32", + "Assured Forwarding 33", + "Assured Forwarding 41", + "Assured Forwarding 42", + "Assured Forwarding 43", + "Expedited Forwarding" + }; + +int +main(int argc , char *argv[]) +{ + + if(argc != 3) + { + ACE_DEBUG((LM_DEBUG, "Usage:\n %s [destination host] [destination port]\n\n", argv[0])); + ACE_OS::exit(1); + } + + + char *buf = (char *)ACE_OS::malloc(20 * sizeof(char)); + ACE_OS::strcpy(buf, "Hello"); + + ACE_SOCK_CODgram sock; + ACE_INET_Addr raddr(ACE_OS::atoi(argv[2]), argv[1]); + + sock.open( raddr, ACE_Addr::sap_any, PF_INET, 0, 1); + int opt=0; + int ret =0, ret2=0; + unsigned int i; + for(i=0; i < 21; i++) + { + opt = dscp[i] << 2; + ret = sock.set_option(IPPROTO_IP, IP_TOS, (int *)&opt, (int)sizeof(opt) ); + if(ret == -1){ + ACE_DEBUG((LM_DEBUG, "setsockopt error: %m\n")); + } + + for (int j=0; j<3; j++) + { + ret2 = sock.send(buf, ACE_OS::strlen(buf)); + if(ret2 == -1){ + ACE_DEBUG((LM_DEBUG, "send error: %m\n")); + } + printf("opt: %u dscp: %u, %s, setsockopt returned: %d, send returned: %d\n", opt, opt >> 2, dscp_char[i], ret, ret2); + ACE_OS::sleep(1); + } + } + + ACE_OS::free(buf); + return 0; +} diff --git a/examples/QOS/Diffserv/run_test.pl b/examples/QOS/Diffserv/run_test.pl new file mode 100755 index 00000000000..aef0765bac8 --- /dev/null +++ b/examples/QOS/Diffserv/run_test.pl @@ -0,0 +1,40 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::Run_Test; + +$iorfile = PerlACE::LocalFile ("ior"); + +unlink $iorfile; +$status = 0; + +$CL = new PerlACE::Process ("diffserv_test", "localhost 20002"); +$SV = new PerlACE::Process ("server"); + +$server = $SV->Spawn (); +$SV->TimedWait(2); + +$client = $CL->SpawnWaitKill (200); + +if ($client != 0) { + $time = localtime; + print STDERR "ERROR: client returned $client at $time\n"; + $status = 1; +} + +$server = $SV->WaitKill (400); + +if ($server != 0) { + $time = localtime; + print STDERR "ERROR: server returned $server at $time\n"; + $status = 1; +} + +unlink $iorfile; + +exit $status; diff --git a/examples/QOS/Diffserv/server.cpp b/examples/QOS/Diffserv/server.cpp new file mode 100644 index 00000000000..2c082cdc1e7 --- /dev/null +++ b/examples/QOS/Diffserv/server.cpp @@ -0,0 +1,163 @@ +//============================================================================= +/** + * @file server.cpp + * + * $Id$ + * + * @author Craig Rodrigues <crodrigu@bbn.com> + * @brief Start a server which listens for UDP packets on a specified port. + */ +//============================================================================= + +#include "ace/Reactor.h" +#include "ace/Process.h" +#include "ace/SOCK_Dgram.h" +#include "ace/INET_Addr.h" +#include "ace/Log_Msg.h" + +// Port used to receive for dgrams. +static u_short port1; + +class Dgram_Endpoint : public ACE_Event_Handler +{ +public: + Dgram_Endpoint (const ACE_INET_Addr &local_addr); + + // = Hook methods inherited from the <ACE_Event_Handler>. + virtual ACE_HANDLE get_handle (void) const; + virtual int handle_input (ACE_HANDLE handle); + virtual int handle_timeout (const ACE_Time_Value & tv, + const void *arg = 0); + virtual int handle_close (ACE_HANDLE handle, + ACE_Reactor_Mask close_mask); + + int send (const char *buf, size_t len, const ACE_INET_Addr &); + // Send the <buf> to the peer. + +private: + ACE_SOCK_Dgram endpoint_; + // Wrapper for sending/receiving dgrams. +}; + +int +Dgram_Endpoint::send (const char *buf, + size_t len, + const ACE_INET_Addr &addr) +{ + return this->endpoint_.send (buf, len, addr); +} + +Dgram_Endpoint::Dgram_Endpoint (const ACE_INET_Addr &local_addr) + : endpoint_ (local_addr) +{ +} + +ACE_HANDLE +Dgram_Endpoint::get_handle (void) const +{ + return this->endpoint_.get_handle (); +} + +int +Dgram_Endpoint::handle_close (ACE_HANDLE handle, + ACE_Reactor_Mask) +{ + ACE_UNUSED_ARG (handle); + + this->endpoint_.close (); + delete this; + return 0; +} + +int +Dgram_Endpoint::handle_input (ACE_HANDLE) +{ + char buf[BUFSIZ]; + ACE_INET_Addr from_addr; + + ssize_t n = this->endpoint_.recv (buf, + sizeof buf, + from_addr); + + if (n == -1) + ACE_ERROR ((LM_ERROR, + "%p\n", + "handle_input")); + else + { + buf[n] = 0; + ACE_DEBUG ((LM_DEBUG, + "Received buf of size %d = %s\n", + n, + buf)); + } + return 0; +} + +int +Dgram_Endpoint::handle_timeout (const ACE_Time_Value &, + const void *) +{ + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) timed out for endpoint\n")); + return 0; +} + +static int +run_test (u_short localport) +{ + ACE_INET_Addr local_addr (localport); + + Dgram_Endpoint *endpoint; + + ACE_NEW_RETURN (endpoint, + Dgram_Endpoint (local_addr), + -1); + + ACE_DEBUG((LM_DEBUG, "Starting server on port %d\n",port1)); + + // Read data from other side. + if (ACE_Reactor::instance ()->register_handler + (endpoint, + ACE_Event_Handler::READ_MASK) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "ACE_Reactor::register_handler"), + -1); + + int ret; + while(1){ + ACE_Time_Value tv(10, 0); + ret = ACE_Reactor::instance ()->handle_events (&tv); + /* Error occurred while handling event */ + if (ret < 0) + { + ACE_ERROR_RETURN ((LM_DEBUG, + "(%P|%t) %p\n", + "handle_events"), + -1); + } + /* We have timed out without handling an event, break out of loop */ + if(ret == 0) break; + } + + return 0; +} + +int +main (int argc, char *argv[]) +{ + // Estabish call backs and socket names. + + port1 = argc > 1 ? ACE_OS::atoi (argv[1]) : ACE_DEFAULT_SERVER_PORT; + + if(argc < 3) + { + run_test (port1); + } + else{ + ACE_DEBUG((LM_DEBUG, "\nUsage:\n %s [port number]\n", argv[0])); + return -1; + } + + return 0; +} diff --git a/examples/QOS/Makefile b/examples/QOS/Makefile index 05f3be650d0..750aab5f183 100644 --- a/examples/QOS/Makefile +++ b/examples/QOS/Makefile @@ -5,7 +5,8 @@ DIRS = Simple \ Change_Sender_TSpec \ - Change_Receiver_FlowSpec + Change_Receiver_FlowSpec \ + Diffserv #---------------------------------------------------------------------------- # Include macros and targets @@ -26,296 +27,3 @@ include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU # DO NOT DELETE THIS LINE -- g++dep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - -.obj/server.o .obj/server.so .shobj/server.o .shobj/server.so: server.cpp $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/pre.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/QoS/QoS_Session.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/QoS/QoS_Session_Factory.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/QoS/ACE_QoS_Export.h \ - $(ACE_ROOT)/ace/QoS/QoS_Decorator.h \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Test_and_Set.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/QoS/SOCK_Dgram_Mcast_QoS.h \ - $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i \ - $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.i \ - $(ACE_ROOT)/ace/QoS/QoS_Manager.h \ - $(ACE_ROOT)/ace/QoS/SOCK_Dgram_Mcast_QoS.i QoS_Util.h \ - Fill_ACE_QoS.h $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Functor.h \ - $(ACE_ROOT)/ace/Functor.i \ - $(ACE_ROOT)/ace/Functor_T.h \ - $(ACE_ROOT)/ace/Functor_T.i \ - $(ACE_ROOT)/ace/Functor_T.cpp \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Memory_Pool.i QoS_Signal_Handler.h \ - Receiver_QoS_Event_Handler.h - -.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/pre.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/QoS/QoS_Session.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/QoS/QoS_Session_Factory.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/QoS/ACE_QoS_Export.h \ - $(ACE_ROOT)/ace/QoS/QoS_Session_Impl.h \ - $(ACE_ROOT)/ace/QoS/QoS_Session_Impl.i \ - $(ACE_ROOT)/ace/QoS/QoS_Decorator.h \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Test_and_Set.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/QoS/SOCK_Dgram_Mcast_QoS.h \ - $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i \ - $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.i \ - $(ACE_ROOT)/ace/QoS/QoS_Manager.h \ - $(ACE_ROOT)/ace/QoS/SOCK_Dgram_Mcast_QoS.i QoS_Util.h \ - Fill_ACE_QoS.h $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Functor.h \ - $(ACE_ROOT)/ace/Functor.i \ - $(ACE_ROOT)/ace/Functor_T.h \ - $(ACE_ROOT)/ace/Functor_T.i \ - $(ACE_ROOT)/ace/Functor_T.cpp \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Memory_Pool.i QoS_Signal_Handler.h \ - Sender_QoS_Event_Handler.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY |