diff --git a/TELNETasp_CNL113320.tpd b/TELNETasp_CNL113320.tpd index 5a7feb67fefb87bd8002913096a5cd400b3f38e1..1e41ec03c1e83769d168de2bf1ce2afb4bda1ad0 100644 --- a/TELNETasp_CNL113320.tpd +++ b/TELNETasp_CNL113320.tpd @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (c) 2014 Ericsson + Copyright (c) 2016 Ericsson All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 @@ -10,25 +10,16 @@ File: TELNETasp_CNL113320.tpd Description: tpd project file - Rev: R8E + Rev: R9A Prodnr: CNL 113 320 - Updated: 2014-09-05 - Contact: http://ttcn.ericsson.se --> <TITAN_Project_File_Information version="1.0"> <ProjectName>TELNETasp_CNL113320</ProjectName> - <ReferencedProjects> - <ReferencedProject name="Abstract_Socket_CNL113384" projectLocationURI="../Common_Components/Abstract_Socket_CNL113384/Abstract_Socket_CNL113384.tpd"/> - </ReferencedProjects> <Folders> - <FolderResource projectRelativePath="doc" relativeURI="doc"/> <FolderResource projectRelativePath="src" relativeURI="src"/> </Folders> <Files> - <FileResource projectRelativePath="doc/TELNETasp_CNL113320_FS.pdf" relativeURI="doc/TELNETasp_CNL113320_FS.pdf"/> - <FileResource projectRelativePath="doc/TELNETasp_CNL113320_PRI.pdf" relativeURI="doc/TELNETasp_CNL113320_PRI.pdf"/> - <FileResource projectRelativePath="doc/TELNETasp_CNL113320_UG.pdf" relativeURI="doc/TELNETasp_CNL113320_UG.pdf"/> <FileResource projectRelativePath="src/TELNETasp_PT.cc" relativeURI="src/TELNETasp_PT.cc"/> <FileResource projectRelativePath="src/TELNETasp_PT.hh" relativeURI="src/TELNETasp_PT.hh"/> <FileResource projectRelativePath="src/TELNETasp_PortType.ttcn" relativeURI="src/TELNETasp_PortType.ttcn"/> @@ -52,14 +43,6 @@ <formalParameter>.*</formalParameter> </NamingCoventions> </ProjectProperties> - <FolderProperties> - <FolderResource> - <FolderPath>doc</FolderPath> - <FolderProperties> - <ExcludeFromBuild>true</ExcludeFromBuild> - </FolderProperties> - </FolderResource> - </FolderProperties> </Configuration> </Configurations> </TITAN_Project_File_Information> diff --git a/demo/TELNETasp_echo.cfg b/demo/TELNETasp_echo.cfg old mode 100755 new mode 100644 diff --git a/doc/155_17_CNL_113_320_Uen_FS.pdf b/doc/15517-CNL113320_EN_J_PDFV1R2.pdf similarity index 100% rename from doc/155_17_CNL_113_320_Uen_FS.pdf rename to doc/15517-CNL113320_EN_J_PDFV1R2.pdf diff --git a/doc/19817-CNL113320.doc b/doc/19817-CNL113320.doc new file mode 100644 index 0000000000000000000000000000000000000000..e227c413602e995c432ed5c0221c7ffcf15c1c4e Binary files /dev/null and b/doc/19817-CNL113320.doc differ diff --git a/doc/198_17_CNL_113_320_Uen_UG.pdf b/doc/198_17_CNL_113_320_Uen_UG.pdf deleted file mode 100644 index a15cf0845a4296a383732583e990d4a692ee3e82..0000000000000000000000000000000000000000 Binary files a/doc/198_17_CNL_113_320_Uen_UG.pdf and /dev/null differ diff --git a/doc/TELNETasp_CNL113320_PRI.doc b/doc/TELNETasp_CNL113320_PRI.doc new file mode 100644 index 0000000000000000000000000000000000000000..7794ff5daeeba91fd61dbb9cdbc91db9ea8bcfa0 Binary files /dev/null and b/doc/TELNETasp_CNL113320_PRI.doc differ diff --git a/src/TELNETasp_PT.cc b/src/TELNETasp_PT.cc index 071565adb91b30ae73f62bb4b7f6084d1538089e..0a3f1bc3e569e3db1c80b5b0355def0f2798d17f 100644 --- a/src/TELNETasp_PT.cc +++ b/src/TELNETasp_PT.cc @@ -21,7 +21,7 @@ // // File: TELNETasp_PT.cc // Description: TELNET testport source file -// Rev: R8H +// Rev: R9A // Prodnr: CNL 113 320 // @@ -584,13 +584,14 @@ set_asp_params(); config_finished = true; suppressed = false; -if(ctrl_portnum == 0) - TTCN_error("Missing mandatory parameter: CTRL_PORTNUM"); if (!server_mode_def){ TTCN_warning("Mode is not defined. Test Port will operate in client mode operation."); server_mode = false; } +if((!server_mode) && (ctrl_portnum == 0)) // The portnum can be zero in server mode. The actual listen port is printed out in WARNING + TTCN_error("Missing mandatory parameter: CTRL_PORTNUM"); + struct sockaddr_in address; int enabled = 1; @@ -634,9 +635,20 @@ if (server_mode){ memset(&(address.sin_zero), '\0', 8); if ( bind(fd_server, (struct sockaddr*)&address, sizeof(address)) < 0 ) - TTCN_error("Error bindig socket to port %d", ctrl_portnum); + TTCN_error("%s: Error bindig socket to port %d. Reason: %d %s",port_name ,ctrl_portnum,errno,strerror(errno)); if (listen(fd_server,1) < 0 ) - TTCN_error("Error listening on port %d", ctrl_portnum); + TTCN_error("%s: Error listening on port %d",port_name ,ctrl_portnum); + + if(ctrl_portnum==0){ // ephemeral port, get the used one + struct sockaddr_in sin; + socklen_t len = sizeof(sin); + if (getsockname(fd_server, (struct sockaddr *)&sin, &len) == -1){ + TTCN_warning("%s : Can not get the listen port number errno:%d %s",port_name,errno,strerror(errno)); + } else { + ctrl_portnum=ntohs(sin.sin_port); + TTCN_warning("%s : The TELNET listen port: %d",port_name,ctrl_portnum); + } + } // FD_ZERO(&readfds); // FD_SET(fd_server, &readfds); @@ -1014,6 +1026,13 @@ void TELNETasp__PT::outgoing_send(const ASP__TelnetPortParameters& send_par) asp_params = new ASP__TelnetPortParameters(send_par); } +void TELNETasp__PT::outgoing_send(const ASP__Get__portnum& /*send_par*/) +{ + ASP__Portnum msg; + msg.local__port__num()=ctrl_portnum; + incoming_message(msg); +} + void TELNETasp__PT::outgoing_send(const ASP__TelnetDynamicConfig& send_par) { switch(send_par.get_selection()) { diff --git a/src/TELNETasp_PT.hh b/src/TELNETasp_PT.hh index aae7a69d8de9564c767c42197e0d263b2481396b..e37e542d020852b7dc9c541e5c491b0083fb45df 100644 --- a/src/TELNETasp_PT.hh +++ b/src/TELNETasp_PT.hh @@ -21,7 +21,7 @@ // // File: TELNETasp_PT.hh // Description: TELNET testport header file -// Rev: R8H +// Rev: R9A // Prodnr: CNL 113 320 // @@ -156,8 +156,8 @@ protected: void outgoing_send(const ASP__TelnetPortParameters& send_par); void outgoing_send(const ASP__TelnetDynamicConfig& send_par); void outgoing_send(const ASP__TelnetConnection& send_par); - void outgoing_send(const ASP__TelnetClose& send_par); - + void outgoing_send(const ASP__TelnetClose& send_par); + void outgoing_send(const ASP__Get__portnum&); void InitStrPar(char *&par, const char *name, const char *val); int ProcessCmd(unsigned char * buf, int buflen); int ProcessNoCmd(unsigned char * buf, int buflen); diff --git a/src/TELNETasp_PortType.ttcn b/src/TELNETasp_PortType.ttcn index eeb7e25b132e20c72f7d47143b2fa95c6ee568d0..188de07fbb9422eaeccc21acb37130dcd6fc52a8 100644 --- a/src/TELNETasp_PortType.ttcn +++ b/src/TELNETasp_PortType.ttcn @@ -21,7 +21,7 @@ // // File: TELNETasp_PortType.ttcn // Description: TELNET testport port definition file -// Rev: R8H +// Rev: R9A // Prodnr: CNL 113 320 // @@ -86,14 +86,20 @@ module TELNETasp_PortType type record ASP_TelnetClose {} - type port TELNETasp_PT message + type record ASP_Get_portnum {} // Querries the local port number + type record ASP_Portnum{ + integer local_port_num // The listening port number. + } +type port TELNETasp_PT message { inout charstring; in integer; + in ASP_Portnum; out ASP_TelnetPortParameters, ASP_TelnetDynamicConfig, ASP_TelnetConnection, - ASP_TelnetClose; + ASP_TelnetClose, + ASP_Get_portnum; } }