From: <aa...@us...> - 2006-07-10 15:16:51
|
Revision: 36 Author: aajjan Date: 2006-07-10 08:16:04 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/gull/?rev=36&view=rev Log Message: ----------- H248: new protocol (not really useful until UDP is functional). MSRP: new protocol. CORE: parsing libraries for text protocols: xml, h248, msrp. CORE: Fix for text protocol core dump in mono-socket mode. CORE: various fixes for text scenario parsing. Modified Paths: -------------- seagull/trunk/src/build.conf seagull/trunk/src/exe-env/xcap-env/config/xcap-dictionnary.xml seagull/trunk/src/library-parser-xml/parser.cpp seagull/trunk/src/library-parser-xml/parser.hpp seagull/trunk/src/library-trans-ip/C_Socket.cpp seagull/trunk/src/library-trans-ip/C_Socket.hpp seagull/trunk/src/library-trans-ip/C_TransIP.cpp seagull/trunk/src/library-trans-ip/socket_t.hpp seagull/trunk/src/parser-frame/ParserFrame.hpp seagull/trunk/src/protocol-binary/C_ProtocolBinary.cpp seagull/trunk/src/protocol-text/C_MessageText.cpp seagull/trunk/src/protocol-text/C_ProtocolText.cpp seagull/trunk/src/protocol-text/C_ProtocolText.hpp seagull/trunk/src/xml-parser/C_XmlParser.cpp Added Paths: ----------- seagull/trunk/src/exe-env/h248-env/ seagull/trunk/src/exe-env/h248-env/config/ seagull/trunk/src/exe-env/h248-env/config/conf.client.xml seagull/trunk/src/exe-env/h248-env/config/conf.server.xml seagull/trunk/src/exe-env/h248-env/config/h248-dictionnary.xml seagull/trunk/src/exe-env/h248-env/logs/ seagull/trunk/src/exe-env/h248-env/run/ seagull/trunk/src/exe-env/h248-env/run/start_client.ksh seagull/trunk/src/exe-env/h248-env/run/start_server.ksh seagull/trunk/src/exe-env/h248-env/scenario/ seagull/trunk/src/exe-env/h248-env/scenario/client.xml seagull/trunk/src/exe-env/h248-env/scenario/server.xml seagull/trunk/src/exe-env/msrp-env/ seagull/trunk/src/exe-env/msrp-env/config/ seagull/trunk/src/exe-env/msrp-env/config/conf.client.xml seagull/trunk/src/exe-env/msrp-env/config/conf.server.xml seagull/trunk/src/exe-env/msrp-env/config/msrp-dictionnary.xml seagull/trunk/src/exe-env/msrp-env/logs/ seagull/trunk/src/exe-env/msrp-env/run/ seagull/trunk/src/exe-env/msrp-env/run/start_client.ksh seagull/trunk/src/exe-env/msrp-env/run/start_server.ksh seagull/trunk/src/exe-env/msrp-env/scenario/ seagull/trunk/src/exe-env/msrp-env/scenario/client.xml seagull/trunk/src/exe-env/msrp-env/scenario/server.xml seagull/trunk/src/library-parser-h248/ seagull/trunk/src/library-parser-h248/parser_h248.cpp seagull/trunk/src/library-parser-h248/parser_h248.hpp seagull/trunk/src/library-parser-msrp/ seagull/trunk/src/library-parser-msrp/parser_msrp.cpp seagull/trunk/src/library-parser-msrp/parser_msrp.hpp Modified: seagull/trunk/src/build.conf =================================================================== --- seagull/trunk/src/build.conf 2006-06-28 13:55:50 UTC (rev 35) +++ seagull/trunk/src/build.conf 2006-07-10 15:16:04 UTC (rev 36) @@ -19,7 +19,7 @@ # General project definitions PROJECT_NAME=seagull -PROJECT_VERSION=1.3.1 +PROJECT_VERSION=1.3.2 function check_dlopen_usage { if test `uname -s` = "HP-UX" @@ -215,7 +215,7 @@ # tool executable BUILD_1_NAME="seagull" BUILD_1_TYPE=exe -BUILD_1_MODULES="common generator-common generator-core generator-model protocol-frame protocol-data protocol-binary protocol-binary-body-not-interpreted protocol-external protocol-text protocol-stats scenario-stats data-log transport-frame generator-traffic generator-scenario external-data xml-parser generator-stats parser-frame" +BUILD_1_MODULES="common generator-common generator-core generator-model protocol-frame protocol-data protocol-binary protocol-binary-body-not-interpreted protocol-external protocol-text protocol-stats scenario-stats data-log transport-frame generator-traffic generator-scenario external-data xml-parser generator-stats parser-frame filter-frame" # ip transport library BUILD_2_NAME="libtrans_ip.so" @@ -232,18 +232,28 @@ BUILD_4_TYPE=simple_exe BUILD_4_MODULES="tool-csvsplit" -# parser library +# xml parser library BUILD_5_NAME="libparser_xml.so" BUILD_5_TYPE=lib -BUILD_5_MODULES="common parser-frame protocol-frame library-parser-xml" +BUILD_5_MODULES="common parser-frame filter-frame protocol-frame library-parser-xml" -# HP OC TCAP 3.2 transport library -#BUILD_6_NAME="libtrans_octcap.so" -#BUILD_6_TYPE=tcap_lib -#BUILD_6_MODULES="common transport-frame protocol-frame library-trans-octcap32" +# h248 parser library +BUILD_6_NAME="libparser_h248.so" +BUILD_6_TYPE=lib +BUILD_6_MODULES="common parser-frame filter-frame protocol-frame library-parser-h248" +# msrp parser library +BUILD_7_NAME="libparser_msrp.so" +BUILD_7_TYPE=lib +BUILD_7_MODULES="common parser-frame filter-frame protocol-frame library-parser-msrp" + +# HP OC TCAP transport library +#BUILD_8_NAME="libtrans_octcap.so" +#BUILD_8_TYPE=tcap_lib +#BUILD_8_MODULES="common transport-frame protocol-frame library-trans-octcap32" + # sctp transport library -#BUILD_7_NAME="libtrans_extsctp.so" -#BUILD_7_TYPE=libextsctp -#BUILD_7_MODULES="common transport-frame protocol-frame library-trans-extsctp" +#BUILD_9_NAME="libtrans_extsctp.so" +#BUILD_9_TYPE=libextsctp +#BUILD_9_MODULES="common transport-frame protocol-frame library-trans-extsctp" Added: seagull/trunk/src/exe-env/h248-env/config/conf.client.xml =================================================================== --- seagull/trunk/src/exe-env/h248-env/config/conf.client.xml (rev 0) +++ seagull/trunk/src/exe-env/h248-env/config/conf.client.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,81 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1"?> +<configuration name="Simple IP Client Conf"> + + <define entity="transport" + name="trans-1" + file="libtrans_ip.so" + create_function="create_cipio_instance" + delete_function="delete_cipio_instance" + init-args="type=tcp"> + </define> + + <define entity="channel" + name="channel-1" + protocol="h248-text" + transport="trans-1" +<!-- + global="no" +--> + open-args="mode=client;dest=127.0.0.1:2944"> + </define> + + + <define entity="traffic-param" name="call-rate" value="1"></define> + <define entity="traffic-param" name="display-period" value="1"></define> + <define entity="traffic-param" name="log-stat-period" value="1"></define> + <define entity="traffic-param" name="log-stat-file" value="../logs/client-stat.csv"></define> + <define entity="traffic-param" name="call-timeout-ms" value="30000"></define> + <define entity="traffic-param" name="display-scenario-stat" value="true"></define> + <define entity="traffic-param" name="display-protocol-stat" value="true"></define> + <define entity="traffic-param" name="log-protocol-stat-period" value="5"></define> + <define entity="traffic-param" name="log-protocol-stat-name" value="all"></define> + <define entity="traffic-param" name="log-protocol-stat-file" value="../logs/client-protocol-stat.csv"></define> + + <define entity="traffic-param" name="call-open-timeout-ms" value="5000"></define> + <define entity="traffic-param" name="execute-check-action" value="false"></define> + +<!-- + <define entity="traffic-param" name="data-log-period" value="10"></define> + <define entity="traffic-param" name="data-log-number" value="1000"></define> + <define entity="traffic-param" name="data-log-file" value="../logs/client-rtt.csv"></define> + <define entity="traffic-param" name="data-log-rtdistrib" value="3000"></define> +--> + + <define entity="traffic-param" name="max-send" value="200"></define> + <define entity="traffic-param" name="max-receive" value="200"></define> + <define entity="traffic-param" name="max-simultaneous-calls" value="2000"></define> + <define entity="traffic-param" name="select-timeout-ms" value="1000"></define> + +<!-- + <define entity="traffic-param" name="number-calls" value="1"></define> +--> + +</configuration> + + + + + + + + Added: seagull/trunk/src/exe-env/h248-env/config/conf.server.xml =================================================================== --- seagull/trunk/src/exe-env/h248-env/config/conf.server.xml (rev 0) +++ seagull/trunk/src/exe-env/h248-env/config/conf.server.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,68 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1"?> +<configuration name="Simple IP Server Conf"> + + <define entity="transport" + name="trans-1" + file="libtrans_ip.so" + create_function="create_cipio_instance" + delete_function="delete_cipio_instance" + init-args="type=tcp"> + </define> + + <define entity="channel" + name="channel-1" + protocol="h248-text" + transport="trans-1" + open-args="mode=server;source=127.0.0.1:2944"> + </define> + + <define entity="traffic-param" name="display-period" value="1"></define> + <define entity="traffic-param" name="log-stat-period" value="1"></define> + <define entity="traffic-param" name="log-stat-file" value="../logs/server-stat.csv"></define> + <define entity="traffic-param" name="call-timeout-ms" value="1000"></define> + <define entity="traffic-param" name="display-scenario-stat" value="true"></define> + <define entity="traffic-param" name="display-protocol-stat" value="true"></define> + <define entity="traffic-param" name="log-protocol-stat-period" value="5"></define> + <define entity="traffic-param" name="log-protocol-stat-name" value="all"></define> + <define entity="traffic-param" name="log-protocol-stat-file" value="../logs/server-protocol-stat.csv"></define> + +<!-- + <define entity="traffic-param" name="data-log-period" value="10"></define> + <define entity="traffic-param" name="data-log-number" value="1000"></define> + <define entity="traffic-param" name="data-log-file" value="../logs/server-rtt.csv"></define> + <define entity="traffic-param" name="data-log-rtdistrib" value="3000"></define> +--> + + <define entity="traffic-param" name="max-send" value="2000"></define> + <define entity="traffic-param" name="max-receive" value="2000"></define> + <define entity="traffic-param" name="max-simultaneous-calls" value="2000"></define> + <define entity="traffic-param" name="select-timeout-ms" value="1000"></define> + + <define entity="traffic-param" name="call-timeout-behaviour-abort" value="true"></define> + <define entity="traffic-param" name="files-no-timestamp" value="true"></define> + + +</configuration> + + + Added: seagull/trunk/src/exe-env/h248-env/config/h248-dictionnary.xml =================================================================== --- seagull/trunk/src/exe-env/h248-env/config/h248-dictionnary.xml (rev 0) +++ seagull/trunk/src/exe-env/h248-env/config/h248-dictionnary.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,113 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<!-- h248/megaco-dictionnary definition --> +<!-- text protocol definition --> +<!-- seagull configuration file set --> + +<?xml version="1.0" encoding="ISO-8859-1"?> + +<protocol name="h248-text" + type="text" + filter="lib=libparser_h248.so;function=filter_h248" + field-separator="" + body-separator="{"> + +<configuration-parameters> +</configuration-parameters> + +<types> +</types> + + +<body-method> + + <defmethod name="body-to-be-parsed" + method="parser" + param="lib=libparser_h248.so;function=parse_h248"> + </defmethod> + +</body-method> + + +<header name="message" + type="type"> + <fielddef name="type"> + <regexp name="message-header-1" + expr="[[:space:]]*MEGACO\/1[[:space:]]*[[]([^]]+)[]][:]{0,1}[0-9]*[[:space:]]*([^ ]+)[[:space:]]*[=][[:space:]]*([0-9]*)[[:space:]]*" + nbexpr="4" + subexpr="2"> + </regexp> + <regexp name="message-header-2" + expr="[[:space:]]*[!]\/1[[:space:]]*[[]([^]]+)[]][:]{0,1}[0-9]*[[:space:]]*([^ ]+)[[:space:]]*[=][[:space:]]*([0-9]*)[[:space:]]*" + nbexpr="4" + subexpr="2"> + </regexp> + </fielddef> + + <fielddef name="transaction-id"> + <regexp name="trans-id" + expr="[Tt][Rr][Aa][Nn][Ss][Aa][Cc][Tt][Ii][Oo][Nn][[:space:]]*[=][[:space:]]*([0-9]+)" + nbexpr="2" + subexpr="1"> + </regexp> + <regexp name="reply-id" + expr="[Rr][Ee][Pp][Ll][Yy][[:space:]]*[=][[:space:]]*([0-9]+)" + nbexpr="2" + subexpr="1"> + </regexp> + </fielddef> + +</header> + +<body name="data" type="data-type"> + <fielddef name="add-id"> + <regexp name="add-id" + expr="[Aa][Dd][Dd][ ]*[=][ ]*([!-}]*)[[:space:]]*[{]" + nbexpr="2" + subexpr="1"> + </regexp> + </fielddef> + +</body> + + +<dictionary session-method="field" + session-id="transaction-id" + out-of-session-id="transaction-id"> + +<!-- +<dictionary session-method="open-id"> +--> + + <message name="Transaction"></message> + <message name="Reply"></message> + +</dictionary> + +</protocol> + + + + + + + + Added: seagull/trunk/src/exe-env/h248-env/run/start_client.ksh =================================================================== --- seagull/trunk/src/exe-env/h248-env/run/start_client.ksh (rev 0) +++ seagull/trunk/src/exe-env/h248-env/run/start_client.ksh 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,24 @@ +#!/bin/ksh +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c)Copyright 2006 Hewlett-Packard Development Company, LP. +# +# + +export LD_LIBRARY_PATH=/usr/local/bin + +seagull -conf ../config/conf.client.xml -dico ../config/h248-dictionnary.xml -scen ../scenario/client.xml -log ../logs/client.log -llevel ET + Property changes on: seagull/trunk/src/exe-env/h248-env/run/start_client.ksh ___________________________________________________________________ Name: svn:executable + * Added: seagull/trunk/src/exe-env/h248-env/run/start_server.ksh =================================================================== --- seagull/trunk/src/exe-env/h248-env/run/start_server.ksh (rev 0) +++ seagull/trunk/src/exe-env/h248-env/run/start_server.ksh 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,24 @@ +#!/bin/ksh +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c)Copyright 2006 Hewlett-Packard Development Company, LP. +# +# + +export LD_LIBRARY_PATH=/usr/local/bin + +seagull -conf ../config/conf.server.xml -dico ../config/h248-dictionnary.xml -scen ../scenario/server.xml -log ../logs/server.log -llevel ET + Property changes on: seagull/trunk/src/exe-env/h248-env/run/start_server.ksh ___________________________________________________________________ Name: svn:executable + * Added: seagull/trunk/src/exe-env/h248-env/scenario/client.xml =================================================================== --- seagull/trunk/src/exe-env/h248-env/scenario/client.xml (rev 0) +++ seagull/trunk/src/exe-env/h248-env/scenario/client.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,108 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1" ?> +<scenario> + + + +<counter> + <counterdef name="transaction-counter" init="0"> </counterdef> +</counter> + +<traffic> + <send channel="channel-1"> + <action> + <inc-counter name="transaction-counter"> </inc-counter> + <set-value name="transaction-id" + format="$(transaction-counter)"> + </set-value> +<!-- + <open args="mode=client;dest=127.0.0.1:2944"></open> +--> + </action> + <message> + <!-- header --> + <! [ CDATA[!/1 [123.123.123.4\]:5698 + Transaction = 11111111]]> + <!-- body --> + <![CDATA[Context = $ { + Add = T2 { + Media { + Stream = 1 { + LocalControl { + Mode = SendReceive, + }, + Local { + v=0\r + c=IN IP4 $\r + m=audio $ RTP/AVP 0\r + a=rtpmap:0 PCMU/8000/1\r + }, + Remote { + v=0 + c=IN IP4 16.16.200.10 + m=audio 10000 RTP/AVP 0 + a=rtpmap:0 PCMU/8000/1 + }} + }}}}]]> + </message> + </send> + + <receive channel="channel-1"> + <message> + <!-- header --> + <![CDATA[MEGACO/1 [123.123.123.4\] + Reply = 2]]> + <!-- body --> + <![CDATA[ Context = 101 { + Add = T1 { + Media { + Stream = 1 { + Local { + v=0 + c=IN IP4 16.16.200.2 + m=audio 20001 RTP/AVP 0 + a=rtpmap:0 PCMU/8000/1 + } + }}}}}}]]> + </message> + + <action> + <!-- close the socket --> +<!-- + <close></close> +--> + </action> + + </receive> +</traffic> + +</scenario> + + + + + + + + + + Added: seagull/trunk/src/exe-env/h248-env/scenario/server.xml =================================================================== --- seagull/trunk/src/exe-env/h248-env/scenario/server.xml (rev 0) +++ seagull/trunk/src/exe-env/h248-env/scenario/server.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,115 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1" ?> +<scenario> + +<traffic> + <receive channel="channel-1"> + <message> + <!-- header --> + <! [ CDATA[MEGACO/1 [123.123.123.4\] + Transaction = 1 ]]> + <!-- body --> + <![CDATA[Context = $ { + Add = T1 { + Media { + Stream = 1 { + LocalControl { + Mode = SendReceive, + }, + Local { + v=0 + c=IN IP4 $ + m=audio $ RTP/AVP 0 + a=rtpmap:0 PCMU/8000/1 + }, + Remote { + v=0 + c=IN IP4 16.16.200.10 + m=audio 10000 RTP/AVP 0 + a=rtpmap:0 PCMU/8000/1 + } + } + } + }}}]]> + </message> + + <action> + <store name="TRANS-ID" entity="transaction-id"> + <regexp name="trans-id" + expr="[Tt][Rr][Aa][Nn][Ss][Aa][Cc][Tt][Ii][Oo][Nn][[:space:]]*[=][[:space:]]*([0-9]+)" + nbexpr="2" + subexpr="1"> + </regexp> + </store> + </action> + + </receive> + + <send channel="channel-1"> + <action> + <restore name="TRANS-ID" entity="transaction-id"></restore> + </action> + <message> + <!-- header --> + <![CDATA[MEGACO/1 [123.123.123.4\] + Reply = 1 +]]> + <!-- body --> + <![CDATA[ Context = 101 { + Add = { + Media { + Stream = 1 { + Local { + v=0 + c=IN IP4 16.16.200.2 + m=audio 20001 RTP/AVP 0 + a=rtpmap:0 PCMU/8000/1 + } + } + } + } + } +}]]> + </message> + + <action> + <!-- close the socket --> +<!-- + <close></close> +--> + </action> + + </send> +</traffic> + +</scenario> + + + + + + + + + + + Added: seagull/trunk/src/exe-env/msrp-env/config/conf.client.xml =================================================================== --- seagull/trunk/src/exe-env/msrp-env/config/conf.client.xml (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/config/conf.client.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,81 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1"?> +<configuration name="Simple IP Client Conf"> + + <define entity="transport" + name="trans-1" + file="libtrans_ip.so" + create_function="create_cipio_instance" + delete_function="delete_cipio_instance" + init-args="type=tcp"> + </define> + + <define entity="channel" + name="channel-1" + protocol="msrp-text" + transport="trans-1" +<!-- + global="no" +--> + open-args="mode=client;dest=127.0.0.1:8493"> + </define> + + + <define entity="traffic-param" name="call-rate" value="1"></define> + <define entity="traffic-param" name="display-period" value="1"></define> + <define entity="traffic-param" name="log-stat-period" value="1"></define> + <define entity="traffic-param" name="log-stat-file" value="../logs/client-stat.csv"></define> + <define entity="traffic-param" name="call-timeout-ms" value="30000"></define> + <define entity="traffic-param" name="display-scenario-stat" value="true"></define> + <define entity="traffic-param" name="display-protocol-stat" value="true"></define> + <define entity="traffic-param" name="log-protocol-stat-period" value="5"></define> + <define entity="traffic-param" name="log-protocol-stat-name" value="all"></define> + <define entity="traffic-param" name="log-protocol-stat-file" value="../logs/client-protocol-stat.csv"></define> + + <define entity="traffic-param" name="call-open-timeout-ms" value="5000"></define> + <define entity="traffic-param" name="execute-check-action" value="false"></define> + +<!-- + <define entity="traffic-param" name="data-log-period" value="10"></define> + <define entity="traffic-param" name="data-log-number" value="1000"></define> + <define entity="traffic-param" name="data-log-file" value="../logs/client-rtt.csv"></define> + <define entity="traffic-param" name="data-log-rtdistrib" value="3000"></define> +--> + + <define entity="traffic-param" name="max-send" value="200"></define> + <define entity="traffic-param" name="max-receive" value="200"></define> + <define entity="traffic-param" name="max-simultaneous-calls" value="2000"></define> + <define entity="traffic-param" name="select-timeout-ms" value="1000"></define> + +<!-- + <define entity="traffic-param" name="number-calls" value="1"></define> +--> + +</configuration> + + + + + + + + Added: seagull/trunk/src/exe-env/msrp-env/config/conf.server.xml =================================================================== --- seagull/trunk/src/exe-env/msrp-env/config/conf.server.xml (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/config/conf.server.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,68 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1"?> +<configuration name="Simple IP Server Conf"> + + <define entity="transport" + name="trans-1" + file="libtrans_ip.so" + create_function="create_cipio_instance" + delete_function="delete_cipio_instance" + init-args="type=tcp"> + </define> + + <define entity="channel" + name="channel-1" + protocol="msrp-text" + transport="trans-1" + open-args="mode=server;source=127.0.0.1:8493"> + </define> + + <define entity="traffic-param" name="display-period" value="1"></define> + <define entity="traffic-param" name="log-stat-period" value="1"></define> + <define entity="traffic-param" name="log-stat-file" value="../logs/server-stat.csv"></define> + <define entity="traffic-param" name="call-timeout-ms" value="1000"></define> + <define entity="traffic-param" name="display-scenario-stat" value="true"></define> + <define entity="traffic-param" name="display-protocol-stat" value="true"></define> + <define entity="traffic-param" name="log-protocol-stat-period" value="5"></define> + <define entity="traffic-param" name="log-protocol-stat-name" value="all"></define> + <define entity="traffic-param" name="log-protocol-stat-file" value="../logs/server-protocol-stat.csv"></define> + +<!-- + <define entity="traffic-param" name="data-log-period" value="10"></define> + <define entity="traffic-param" name="data-log-number" value="1000"></define> + <define entity="traffic-param" name="data-log-file" value="../logs/server-rtt.csv"></define> + <define entity="traffic-param" name="data-log-rtdistrib" value="3000"></define> +--> + + <define entity="traffic-param" name="max-send" value="2000"></define> + <define entity="traffic-param" name="max-receive" value="2000"></define> + <define entity="traffic-param" name="max-simultaneous-calls" value="2000"></define> + <define entity="traffic-param" name="select-timeout-ms" value="1000"></define> + + <define entity="traffic-param" name="call-timeout-behaviour-abort" value="true"></define> + <define entity="traffic-param" name="files-no-timestamp" value="true"></define> + + +</configuration> + + + Added: seagull/trunk/src/exe-env/msrp-env/config/msrp-dictionnary.xml =================================================================== --- seagull/trunk/src/exe-env/msrp-env/config/msrp-dictionnary.xml (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/config/msrp-dictionnary.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,105 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<!-- msrp-dictionnary definition --> +<!-- text protocol definition --> +<!-- seagull configuration file set --> + +<?xml version="1.0" encoding="ISO-8859-1"?> + +<protocol name="msrp-text" + type="text" + filter="lib=libparser_msrp.so;function=filter_msrp" + field-separator="\r\n" + body-separator="-------"> + +<configuration-parameters> +</configuration-parameters> + +<types> +</types> + +<body-method> + + <defmethod name="body-to-be-parsed" + method="parser" + param="lib=libparser_msrp.so;function=parse_msrp"> + </defmethod> + +</body-method> + + +<header name="message" + type="type"> + <fielddef name="type"> + <regexp name="message-type" + expr="[[:space:]]*MSRP[[:space:]]+[^ ]+[[:space:]]*([!-}]*)" + nbexpr="2" + line="0" + subexpr="1"> + </regexp> + </fielddef> + + <fielddef name="session-id"> + <regexp name="session-id" + expr="[[:space:]]*MSRP[[:space:]]+([^ ]+)[[:space:]]*[^ ]+" + nbexpr="2" + subexpr="1"> + </regexp> + </fielddef> + +</header> + +<body name="data" type="data-type"> +</body> + + +<dictionary session-method="field" + session-id="session-id" + out-of-session-id="session-id"> + +<!-- +out-of-session-id="session-id" +<dictionary session-method="open-id"> +--> + <message name="SEND"></message> + <message name="REPORT"></message> + <message name="200"></message> <!-- successful --> + <message name="400"></message> <!-- unintelligible --> + <message name="403"></message> <!-- not allowed --> + <message name="408"></message> + <message name="413"></message> <!-- undesired message --> + <message name="415"></message> <!-- not understood --> + <message name="423"></message> <!-- out of bounds --> + <message name="481"></message> <!-- not exist --> + <message name="501"></message> + <message name="506"></message> + +</dictionary> + +</protocol> + + + + + + + + Added: seagull/trunk/src/exe-env/msrp-env/run/start_client.ksh =================================================================== --- seagull/trunk/src/exe-env/msrp-env/run/start_client.ksh (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/run/start_client.ksh 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,24 @@ +#!/bin/ksh +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c)Copyright 2006 Hewlett-Packard Development Company, LP. +# +# + +export LD_LIBRARY_PATH=/usr/local/bin + +seagull -conf ../config/conf.client.xml -dico ../config/msrp-dictionnary.xml -scen ../scenario/client.xml -log ../logs/client.log -llevel ET + Property changes on: seagull/trunk/src/exe-env/msrp-env/run/start_client.ksh ___________________________________________________________________ Name: svn:executable + * Added: seagull/trunk/src/exe-env/msrp-env/run/start_server.ksh =================================================================== --- seagull/trunk/src/exe-env/msrp-env/run/start_server.ksh (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/run/start_server.ksh 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,24 @@ +#!/bin/ksh +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c)Copyright 2006 Hewlett-Packard Development Company, LP. +# +# + +export LD_LIBRARY_PATH=/usr/local/bin + +seagull -conf ../config/conf.server.xml -dico ../config/mrsp-dictionnary.xml -scen ../scenario/server.xml -log ../logs/server.log -llevel ET + Property changes on: seagull/trunk/src/exe-env/msrp-env/run/start_server.ksh ___________________________________________________________________ Name: svn:executable + * Added: seagull/trunk/src/exe-env/msrp-env/scenario/client.xml =================================================================== --- seagull/trunk/src/exe-env/msrp-env/scenario/client.xml (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/scenario/client.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,87 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1" ?> +<scenario> + + + +<counter> + <counterdef name="session-counter" init="0"> </counterdef> +</counter> + +<traffic> + <send channel="channel-1"> + <action> + <inc-counter name="session-counter"> </inc-counter> + <set-value name="session-id" + format="$(session-counter)"> + </set-value> +<!-- + <open args="mode=client;dest=127.0.0.1:8493"></open> +--> + </action> + <message> + <!-- header --> + <! [ CDATA[MSRP d93kswow SEND + To-Path: msrp://bob.example.com:8888/9di4ea;tcp + From-Path: msrp://alicepc.example.com:7777/iau39;tcp + Message-ID: 12339sdqwer + Content-Type: text/plain + Hi, I'm Alice !]]> + <!-- body --> + <![CDATA[d93kswow$ + ]]> + </message> + </send> + + <receive channel="channel-1"> + <message> + <! -- header --> + <![CDATA[MSRP d93kswow 200 OK + To-Path: msrp://alicepc.example.com:7777/iau39;tcp + From-Path: msrp://bob.example.com:8888/9di4ea;tcp + ]]> + <!-- body --> + <![CDATA[d93kswow$ + ]]> + </message> + + <action> + <!-- close the socket --> +<!-- + <close></close> +--> + </action> + + </receive> +</traffic> + +</scenario> + + + + + + + + + + Added: seagull/trunk/src/exe-env/msrp-env/scenario/server.xml =================================================================== --- seagull/trunk/src/exe-env/msrp-env/scenario/server.xml (rev 0) +++ seagull/trunk/src/exe-env/msrp-env/scenario/server.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,86 @@ +<!-- + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (c)Copyright 2006 Hewlett-Packard Development Company, LP. + +--> + +<?xml version="1.0" encoding="ISO-8859-1" ?> +<scenario> + +<traffic> + <receive channel="channel-1"> + <message> + <!-- header --> + <! [ CDATA[MSRP d93kswow SEND + To-Path: msrp://bob.example.com:8888/9di4ea;tcp + From-Path: msrp://alicepc.example.com:7777/iau39;tcp + Message-ID: 12339sdqwer + Content-Type: text/plain + Hi, I'm Alice !]]> + <!-- body --> + <![CDATA[d93kswow$ + ]]> + </message> + + <action> + <store name="TRANS-ID" entity="session-id"> + <regexp name="session-id" + expr="[[:space:]]*MSRP[[:space:]]+([^ ]+)[[:space:]]*[^ ]+" + nbexpr="2" + subexpr="1"> + </regexp> + </store> + </action> + </receive> + + <send channel="channel-1"> + <action> + <restore name="TRANS-ID" entity="session-id"></restore> + </action> + <message> + <! -- header --> + <![CDATA[MSRP foo_transactionid 200 OK + To-Path: msrp://alicepc.example.com:7777/iau39;tcp + From-Path: msrp://bob.example.com:8888/9di4ea;tcp + ]]> + <!-- body --> + <![CDATA[d93kswow$ + ]]> + </message> + + <action> + <!-- close the socket --> +<!-- + <close></close> +--> + </action> + + </send> +</traffic> + +</scenario> + + + + + + + + + + + Modified: seagull/trunk/src/exe-env/xcap-env/config/xcap-dictionnary.xml =================================================================== --- seagull/trunk/src/exe-env/xcap-env/config/xcap-dictionnary.xml 2006-06-28 13:55:50 UTC (rev 35) +++ seagull/trunk/src/exe-env/xcap-env/config/xcap-dictionnary.xml 2006-07-10 15:16:04 UTC (rev 36) @@ -26,6 +26,8 @@ <protocol name="xcap-protocol" type="text" + filter="lib=libparser_xml.so;function=filter_xml" + field-separator="\r\n" body-separator="\r\n"> <configuration-parameters> Added: seagull/trunk/src/library-parser-h248/parser_h248.cpp =================================================================== --- seagull/trunk/src/library-parser-h248/parser_h248.cpp (rev 0) +++ seagull/trunk/src/library-parser-h248/parser_h248.cpp 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,201 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * (c)Copyright 2006 Hewlett-Packard Development Company, LP. + * + */ + +#include "parser_h248.hpp" +#include "iostream_t.hpp" +#include <regex.h> +#include "string_t.hpp" +#include "Utils.hpp" + + +C_ProtocolFrame::T_MsgError parse_h248 (char *P_buf, + size_t *P_size, + char *P_buf_header, + size_t P_size_header) { + + C_ProtocolFrame::T_MsgError L_error = C_ProtocolFrame::E_MSG_ERROR_DECODING_SIZE_LESS ; + + size_t L_size = *P_size ; + int L_nb_acc = 1 ; + size_t L_i = 0 ; + + while (L_size) { + switch (P_buf[L_i]) { + case '{': + L_nb_acc++ ; + break ; + case '}': + L_nb_acc-- ; + break ; + default : + break ; + } + L_size-- ; + + L_i++; + + if (L_nb_acc == 0) { + L_error = C_ProtocolFrame::E_MSG_OK ; + *P_size -= (L_i+1) ; + break ; + } + } + + return (L_error) ; +} + + +char* skip_blank(char *P_ptr, + char *P_buffer, + size_t P_size_buffer, + size_t *P_size) { + + char *L_blank_ptr = NULL ; + char *L_new_ptr = P_ptr ; + + + L_blank_ptr = P_ptr ; + while (((L_blank_ptr) && (L_blank_ptr < (P_buffer + P_size_buffer))) && + ((*L_blank_ptr == ' ') || + (*L_blank_ptr == '\t'))) { L_blank_ptr++ ; } + if (L_blank_ptr != P_ptr) { + *(P_size) = (L_blank_ptr - P_ptr) ; + L_new_ptr = L_blank_ptr ; + } + + return (L_new_ptr) ; +} + + +char * filter_h248(char* P_buffer) { + + size_t L_size = 0 ; + + size_t L_size_buffer = 0 ; + size_t L_size_end = 0 ; + + char *L_pos = NULL ; + char *L_ptr = P_buffer ; + + char *L_result = NULL ; + char *L_new = NULL ; + + bool L_skip_blank = true ; + size_t L_size_blank = 0 ; + + + if ((P_buffer != NULL) && + ((L_size_buffer = strlen(P_buffer)) > 0 )) { + + L_size_end = L_size_buffer ; + + ALLOC_TABLE(L_result, + char*, + sizeof(char), + L_size_buffer); + + if ((strchr(L_ptr,'\n')) == NULL) { + L_new = L_result ; + L_size = L_size_buffer ; + + // skip blank + if (L_skip_blank) { + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + } + + memcpy(L_new, L_ptr, L_size); + L_new += (L_size+1) ; + + *L_new = '\0' ; + *(L_new-1) = '\n' ; + + } else { + // if '\n' exists + + while( (L_ptr) + && (L_pos = strchr(L_ptr,'\n')) != NULL) { + + L_size_blank = 0 ; + // L_size : from start to '\n' not included + L_size = L_pos - L_ptr ; + // skip blank + if (L_skip_blank) { + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + L_size_end -= L_size_blank ; + } + + if (L_new == NULL) { L_new = L_result ; } else { L_new += 1 ; } + memcpy(L_new, L_ptr, L_size); + + L_new += L_size ; + // test end needed ? for L_ptr + if ((L_pos + 1) <= (P_buffer+L_size_buffer)) { + L_ptr = L_pos + 1 ; + } else { + L_ptr = NULL ; + } + + L_size_end -= (L_size + 1) ; + + *(L_new) = '\n' ; + + } // while + + + // ctrl the end of buffer + if (L_size_end > 0) { + + L_size = L_size_end ; + L_size_blank = 0 ; + + // skip blank + if (L_skip_blank) { + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + } + + + if (L_size) { + L_new +=1 ; + + memcpy(L_new, L_ptr, L_size); + L_new += (L_size+1) ; + + *L_new = '\0' ; + *(L_new-1) = '\n' ; + } else { + // add final '\0' + L_new += 1 ; + *L_new = '\0' ; + } + } else { + // add final '\0' + L_new += 1 ; + *L_new = '\0' ; + + } + } + } + + return (L_result); + +} + Added: seagull/trunk/src/library-parser-h248/parser_h248.hpp =================================================================== --- seagull/trunk/src/library-parser-h248/parser_h248.hpp (rev 0) +++ seagull/trunk/src/library-parser-h248/parser_h248.hpp 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,36 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * (c)Copyright 2006 Hewlett-Packard Development Company, LP. + * + */ + +#ifndef _PARSER_H248_HPP_ +#define _PARSER_H248_HPP_ + +#include "C_ProtocolFrame.hpp" + + +extern "C" C_ProtocolFrame::T_MsgError parse_h248 (char *P_buf, + size_t *P_size, + char *P_buf_header, + size_t P_size_header); + + +extern "C" char * filter_h248(char* P_buffer) ; + + +#endif // _PARSER_H248_HPP_ + Added: seagull/trunk/src/library-parser-msrp/parser_msrp.cpp =================================================================== --- seagull/trunk/src/library-parser-msrp/parser_msrp.cpp (rev 0) +++ seagull/trunk/src/library-parser-msrp/parser_msrp.cpp 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,200 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * (c)Copyright 2006 Hewlett-Packard Development Company, LP. + * + */ + +#include "parser_msrp.hpp" +#include "iostream_t.hpp" +#include <regex.h> +#include "string_t.hpp" +#include "Utils.hpp" + + +C_ProtocolFrame::T_MsgError parse_msrp (char *P_buf, + size_t *P_size, + char *P_buf_header, + size_t P_size_header) { + + // C_ProtocolFrame::T_MsgError L_error = C_ProtocolFrame::E_MSG_ERROR_DECODING_SIZE_LESS ; + C_ProtocolFrame::T_MsgError L_error = C_ProtocolFrame::E_MSG_OK; + + return (L_error) ; +} + + +char* skip_blank(char *P_ptr, + char *P_buffer, + size_t P_size_buffer, + size_t *P_size) { + + char *L_blank_ptr = NULL ; + char *L_new_ptr = P_ptr ; + + + L_blank_ptr = P_ptr ; + while (((L_blank_ptr) && (L_blank_ptr < (P_buffer + P_size_buffer))) && + ((*L_blank_ptr == ' ') || + (*L_blank_ptr == '\t'))) { L_blank_ptr++ ; } + if (L_blank_ptr != P_ptr) { + *(P_size) = (L_blank_ptr - P_ptr) ; + L_new_ptr = L_blank_ptr ; + } + + return (L_new_ptr) ; +} + + +char * filter_msrp(char* P_buffer) { + + size_t L_size = 0 ; + + size_t L_size_buffer = 0 ; + size_t L_size_end = 0 ; + + char *L_pos = NULL ; + char *L_ptr = P_buffer ; + + char *L_result = NULL ; + char *L_new = NULL ; + + bool L_skip_blank = true ; + size_t L_size_blank = 0 ; + + + if ((P_buffer != NULL) && + ((L_size_buffer = strlen(P_buffer)) > 0 )) { + + L_size_end = L_size_buffer ; + + ALLOC_TABLE(L_result, + char*, + sizeof(char), + (2*L_size_buffer)); + + + if ((strchr(L_ptr,'\n')) == NULL) { + + L_new = L_result ; + L_size = L_size_buffer ; + + // skip blank + if (L_skip_blank) { + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + } + + memcpy(L_new, L_ptr, L_size); + L_new += (L_size - 1) ; + if (*L_new != '\r') { + L_new += 1 ; + *L_new = '\r' ; + } + L_new += 2 ; + *L_new = '\0' ; + *(L_new-1) = '\n' ; + + } else { + // if '\n' exists + + while( (L_ptr) + && (L_pos = strchr(L_ptr,'\n')) != NULL) { + + L_size_blank = 0 ; + // L_size : from start to '\n' not included + L_size = L_pos - L_ptr ; + // skip blank + if (L_skip_blank) { + + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + L_size_end -= L_size_blank ; + + } + + if (L_new == NULL) { L_new = L_result ; } else { L_new += 1 ; } + memcpy(L_new, L_ptr, L_size); + L_new += (L_size - 1) ; + // test end needed ? for L_ptr + if ((L_pos + 1) <= (P_buffer+L_size_buffer)) { + L_ptr = L_pos + 1 ; + } else { + L_ptr = NULL ; + } + + L_size_end -= (L_size + 1) ; + + if (*L_new != '\r') { + L_new += 1 ; + *(L_new) = '\r' ; + } + L_new += 1 ; + *(L_new) = '\n' ; + + } // while + + + // ctrl the end of buffer + if (L_size_end > 0) { + + L_size = L_size_end ; + L_size_blank = 0 ; + + // skip blank + if (L_skip_blank) { + + L_ptr = skip_blank(L_ptr,P_buffer, L_size_buffer, &L_size_blank) ; + L_size -= L_size_blank ; + } + + if (L_size) { + L_new +=1 ; + + memcpy(L_new, L_ptr, L_size); + L_new += (L_size-1) ; + + if (*L_new != '\r') { + L_new += 1 ; + *(L_new) = '\r' ; + } + L_new += 2 ; + *L_new = '\0' ; + *(L_new-1) = '\n' ; + } else { + // add final '\0' + L_new += 1 ; + *L_new = '\0' ; + } + } else { + // add final '\0' + L_new += 1 ; + *L_new = '\0' ; + + } + } + } + + if (L_result != NULL) { + L_ptr = L_result ; + while ((L_ptr = strstr(L_ptr, "\r\n\r\n")) != NULL ) { + memmove(L_ptr+2, L_ptr+4, strlen(L_ptr+4)); + L_ptr += 2 ; + } + } + + return (L_result); +} + Added: seagull/trunk/src/library-parser-msrp/parser_msrp.hpp =================================================================== --- seagull/trunk/src/library-parser-msrp/parser_msrp.hpp (rev 0) +++ seagull/trunk/src/library-parser-msrp/parser_msrp.hpp 2006-07-10 15:16:04 UTC (rev 36) @@ -0,0 +1,40 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * (c)Copyright 2006 Hewlett-Packard Development Company, LP. + * + */ + +#ifndef _PARSER_MSRP_HPP_ +#define _PARSER_MSRP_HPP_ + +#include "C_ProtocolFrame.hpp" + + +extern "C" C_ProtocolFrame::T_MsgError parse_msrp (char *P_buf, + size_t *P_size, + char *P_buf_header, + size_t P_size_header); + + +extern "C" char * filter_msrp(char* P_buffer) ; + + +#endif // _PARSER_MSRP_HPP_ + + + + + Modified: seagull/trunk/src/library-parser-xml/parser.cpp =================================================================== --- seagull/trunk/src/library-parser-xml/parser.cpp 2006-06-28 13:55:50 UTC (rev 35) +++ seagull/trunk/src/library-parser-xml/parser.cpp 2006-07-10 15:16:04 UTC (rev 36) @@ -21,10 +21,12 @@ #include "iostream_t.hpp" #include <regex.h> #include "string_t.hpp" +#include "Utils.hpp" - C_ProtocolFrame::T_MsgError parse_xml (char *P_buf, - size_t *P_size) { + size_t *P_size, + char *P_buf_header, + size_t P_size_header) { C_ProtocolFrame::T_MsgError L_error = C_ProtocolFrame::E_MSG_ERROR_DECODING ; regex_t L_reg_expr ; @@ -156,3 +158,166 @@ } +char* skip_blank(char *P_ptr, + char *P_buffer, + size_t P_size_buffer, + size_t *P_size) { + + char *L_blank_ptr = NULL ; + char *L_new_ptr = P_ptr ; + + + L_blank_ptr = P_ptr ; + while (((L_blank_ptr) && (L_blank_ptr < (P_buffer + P_size_buffer))) && + ((*L_blank_ptr == ' ') || + (*L_blank_ptr == '\t'))) { L_blank_ptr++ ; } + if (L_blank_ptr != P_ptr) { + *(P_size) = (L_blank_ptr - P_ptr) ; + L_new_ptr = L_blank_ptr ; + } + + return (L_new_ptr) ; +} + + + + +char * filter_xml(char* P_buffer) { + + size_t L_size = 0 ; + + size_t L_size_buffer = 0 ; + size_t L_size_end = 0 ; + + char *L_pos = NULL ; + char *L_ptr = P_buffer ; + + char *L_result = NULL ; + char *L_new = NULL ; + + bool L_skip_blank = true ; + size_t L_size_blank = 0 ; + + + if ((P_buffer != NULL) && + ((L_size_buffer = strlen(P_buffer)) > 0 )) { + + L_size_end = L_size_buffer ; + + ALLOC_TABLE(L_result, + char*, + sizeof(char), + (2*L_size_buffer... [truncated message content] |