Patches
From SIPp
Contents |
Patches
This page lists all the patches that are not (yet) in SIPp's CVS.
Template
This template is to be used to add new patches here.
- Explanation
Explain what is the purpose of the patch.
- Version
SIPp version against which the patch is provided. Like "SIPp-Cumulus 2006-03-20"
- Patch
Provide the link to the patch tracker associated to this patch, like: http://sourceforge.net/tracker/index.php?func=detail&aid=1485708&group_id=104305&atid=637566 A patch is submitted by using this link: http://sourceforge.net/tracker/?func=add&group_id=104305&atid=637566
- Author
Provide the name of the author as well as email address Olivier Jacques
- Example
If applicable, provide an example (scenario file or other).
Call_id
- Explanation
Add a new command line parameter: cid_str as well as support of multiple call-id in one call instance.
- Status
Checked-in on 2006-06-06, limitations still apply.
- Version
SIPp-Cumulus 2006-03-20
- Patch
http://sourceforge.net/tracker/index.php?func=detail&aid=1485751&group_id=104305&atid=637566
- Author
- Peter Higginson (code)
- F. Tarek Rogers (factoring)
- Example
N/A
- Comments
- 3PCC issue: This patch doesn't work as it is for 3PCC but would be very useful for testing conferences. When 3pcc-C-B gets the recvCmd, it needs to add_call(ipv6) and not add_call(call_id, ipv6). Also if 3pcc-C-B uses sendCmd towards 3pcc-C-A, it will not be understood as the call_id is not what 3pcc-C-A expects. This should be in a first place be resolved by changing 3pcc so that the "call-id" used between 3pcc-C-A and 3pcc-C-B is not the SIP Call-ID header.
- Potential TLS issue too: needs to add_call(ipv6) and not add_call(call_id, ipv6)
Pre/Post scenarios
- Explanation
The Pre- and Post-Scenarios are required to Register and De-Register a SIPp UAS without being forced to start SIPp twice with distinct scenario files.
- Version
SIPp version against which the patch is provided. Like "SIPp-Cumulus 2006-03-20"
- Patch
http://sourceforge.net/tracker/index.php?func=detail&aid=1485741&group_id=104305&atid=637566
- Author
Michael Hirschbichler and Joachim Fabini
- Example
N/A
Pace patch
- Purpose
Say you want to simulate a UAC that sends registers every 25 seconds and does rest of the processing of INVITES as stated on the command line.
- Patch
http://sourceforge.net/tracker/index.php?func=detail&aid=1485708&group_id=104305&atid=637566
- Author
- Example
Scenario with pace
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!-- 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 -->
<!-- -->
<!-- Sipp 'uac behind NAT' scenario. -->
<!-- -->
<scenario name="UAC Behind NAT">
<!-- "pace" attribute for <send> paces a message every so often.
Used as pace=n specifies that the event has to be scheduled
every n milliseconds.
This attribute MUST be used in conjunction with "next"
attribute. In case the event is not due, the control jumps to
label specified by next.
Control flow for "pace" in conjunction with "next" is as
follows:
Send REGISTER during the very first iteration
For subsequent iterations :
if (it is time to send paced REGISTER) {
send the REGISTER
Wait for 100 OK (optional)
Wait for 200 OK (mandatory)
} else {
jump to label specified by next
}
-->
<!-- pace is set to 25000 milliseconds in this example
because Expires header is set to 50 seconds -->
<send retrans="500" pace="25000" next="1">
<![CDATA[
REGISTER sip:foo.com SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port]
From: sipp <sip:uac@foo.com>;tag=[call_number]
To: sut <sip:uac@foo.com>
Call-ID: [call_id]
Cseq: 1 REGISTER
Contact: <sip:uac@[local_ip]:[local_port]>;transport=[transport]
Max-Forwards: 70
User-Agent: Sipp Performance tester version 1.0
Subject: Performance Test
Expires:50
Content-Length: 0
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="200" rtd="true">
</recv>
<label id="1" />
<send retrans="500">
<![CDATA[
INVITE sip:uas@foo.com SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: ua[call_number] <sip:uac@foo.com:[local_port]>;tag=[call_number]
To: ua2 <sip:uas@foo.com:[remote_port]>
Call-ID: [call_id]
CSeq: 100 INVITE
Contact: <sip:uac@[local_ip]:[local_port]>
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 0
a=rtpmap:0 PCMU/8000
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<recv response="183" optional="true">
</recv>
<recv response="200" rtd="true">
</recv>
<send>
<![CDATA[
ACK sip:uas@foo.com SIP/2.0
[last_Via:]
[last_From:]
[last_To:]
Call-ID: [call_id]
CSeq: 100 ACK
Contact:<sip:uac@[local_ip]:[local_port]>
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<pause milliseconds="10000"/>
<send retrans="500">
<![CDATA[
BYE sip:uas@foo.com SIP/2.0
[last_Via:]
From: ua1 <sip:uac@foo.com:[local_port]>;tag=[call_number]
To: ua2 <sip:uas@foo.com:[remote_port]>[peer_tag_param]
[last_Call-ID:]
CSeq: 101 BYE
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<recv response="200" rtd="true" crlf="true">
</recv>
<!-- definition of the response time repartition table (unit is ms) -->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- definition of the call length repartition table (unit is ms) -->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
ssrcBump
- Purpose
Applies a constant offset to the incoming SSRC in each packet before sending it out. This may be necessary to comply with the RFC (depending on how you read it), and it also make reading packet captures easier. The offset is currently hard-coded in, but probably should be a #define.
- Version
SIPp-Cumulus version 2006-03-20
- Patch
See http://sourceforge.net/tracker/index.php?func=detail&aid=1485719&group_id=104305&atid=637566
- Author
- Example
N/A.
silentMode
- Purpose
Adds a new command-line switch, '-si'. If this switch is provided, no output is sent to the controlling terminal. This is helpful for running sipp inside of a script. I did not add the description for this switch to the help text.
- Version
SIPp-Cumulus version 2006-03-20
- Patch
See http://sourceforge.net/tracker/index.php?func=detail&aid=1485723&group_id=104305&atid=637566
- Author
- Example
N/A.
Other patches
- Checksum UDP over IPv6 correctly: http://sourceforge.net/tracker/index.php?func=detail&aid=1486246&group_id=104305&atid=637566 (Guillaume Teissier)
- Fix for Content-length with auth, local ip addr, authtype init: http://sourceforge.net/tracker/index.php?func=detail&aid=1487223&group_id=104305&atid=637566 (Wolfgang Beck)
- Remove redundent call to compute_cseq: http://sourceforge.net/tracker/index.php?func=detail&aid=1501290&group_id=104305&atid=637566
