modules/ims_qos: added patch for flow-description bug when request originates from...
[sip-router] / fmsg.c
1 /**
2  * Copyright (C) 2009 Daniel-Constantin Mierla (asipto.com)
3  *
4  * This file is part of kamailio, a free SIP server.
5  *
6  * Kamailio is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * Kamailio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20 /*!
21 * \file
22 * \brief Faked message handling
23 */
24
25 #include "dprint.h"
26 #include "globals.h"
27 #include "dset.h"
28
29 #include "fmsg.h"
30
31 #define FAKED_SIP_MSG "OPTIONS sip:you@kamailio.org SIP/2.0\r\nVia: SIP/2.0/UDP 127.0.0.1\r\nFrom: <you@kamailio.org>;tag=123\r\nTo: <you@kamailio.org>\r\nCall-ID: 123\r\nCSeq: 1 OPTIONS\r\nContent-Length: 0\r\n\r\n"
32 #define FAKED_SIP_MSG_LEN (sizeof(FAKED_SIP_MSG)-1)
33 static char _faked_sip_buf[FAKED_SIP_MSG_LEN+1];
34 static struct sip_msg _faked_msg;
35 static unsigned int _faked_msg_no = 0;
36
37 int faked_msg_init(void)
38 {
39         if(_faked_msg_no>0)
40                 return 0;
41         /* init faked sip msg */
42         memcpy(_faked_sip_buf, FAKED_SIP_MSG, FAKED_SIP_MSG_LEN);
43         _faked_sip_buf[FAKED_SIP_MSG_LEN] = '\0';
44
45         memset(&_faked_msg, 0, sizeof(struct sip_msg));
46
47         _faked_msg.buf=_faked_sip_buf;
48         _faked_msg.len=FAKED_SIP_MSG_LEN;
49
50         _faked_msg.set_global_address=default_global_address;
51         _faked_msg.set_global_port=default_global_port;
52
53         if (parse_msg(_faked_msg.buf, _faked_msg.len, &_faked_msg)!=0)
54         {
55                 LM_ERR("parse_msg failed\n");
56                 return -1;
57         }
58
59         _faked_msg.rcv.proto = PROTO_UDP;
60         _faked_msg.rcv.src_port = 5060;
61         _faked_msg.rcv.src_ip.u.addr32[0] = 0x7f000001;
62         _faked_msg.rcv.src_ip.af = AF_INET;
63         _faked_msg.rcv.src_ip.len = 4;
64         _faked_msg.rcv.dst_port = 5060;
65         _faked_msg.rcv.dst_ip.u.addr32[0] = 0x7f000001;
66         _faked_msg.rcv.dst_ip.af = AF_INET;
67         _faked_msg.rcv.dst_ip.len = 4;
68
69         return 0;
70 }
71
72 sip_msg_t* faked_msg_next(void)
73 {
74         _faked_msg.id = 1 + _faked_msg_no++;
75         _faked_msg.pid = my_pid();
76         memset(&_faked_msg.tval, 0, sizeof(struct timeval));
77         clear_branches();
78         return &_faked_msg;
79 }
80
81 sip_msg_t* faked_msg_get_next(void)
82 {
83         faked_msg_init();
84         return faked_msg_next();
85 }