registrar/sip_msg.h

Go to the documentation of this file.
00001 /*
00002  * $Id: sip_msg.h 4518 2008-07-28 15:39:28Z henningw $
00003  *
00004  * SIP message related functions
00005  *
00006  * Copyright (C) 2001-2003 FhG Fokus
00007  *
00008  * This file is part of Kamailio, a free SIP server.
00009  *
00010  * Kamailio is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version
00014  *
00015  * Kamailio is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  * GNU General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU General Public License 
00021  * along with this program; if not, write to the Free Software 
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023  */
00024 /*!
00025  * \file
00026  * \brief SIP registrar module - SIP message related functions
00027  * \ingroup registrar   
00028  */  
00029 
00030 
00031 #ifndef SIP_MSG_H
00032 #define SIP_MSG_H
00033 
00034 #include "../../qvalue.h"
00035 #include "../../parser/msg_parser.h"
00036 #include "../../parser/contact/parse_contact.h"
00037 
00038 
00039 /*! \brief
00040  * Parse the whole message and bodies of all header fields
00041  * that will be needed by registrar
00042  */
00043 int parse_message(struct sip_msg* _m);
00044 
00045 
00046 /*! \brief
00047  * Check if the originating REGISTER message was formed correctly
00048  * The whole message must be parsed before calling the function
00049  * _s indicates whether the contact was star
00050  */
00051 int check_contacts(struct sip_msg* _m, int* _s);
00052 
00053 
00054 /*! \brief
00055  * Get the first contact in message
00056  */
00057 contact_t* get_first_contact(struct sip_msg* _m);
00058 
00059 
00060 /*! \brief
00061  * Get next contact in message
00062  */
00063 contact_t* get_next_contact(contact_t* _c);
00064 
00065 
00066 /*! \brief
00067  * Calculate absolute expires value per contact as follows:
00068  * 1) If the contact has expires value, use the value. If it
00069  *    is not zero, add actual time to it
00070  * 2) If the contact has no expires parameter, use expires
00071  *    header field in the same way
00072  * 3) If the message contained no expires header field, use
00073  *    the default value
00074  */
00075 void calc_contact_expires(struct sip_msg* _m, param_t* _ep, int* _e);
00076 
00077 
00078 /*! \brief
00079  * Calculate contact q value as follows:
00080  * 1) If q parameter exist, use it
00081  * 2) If the parameter doesn't exist, use default value
00082  */
00083 int calc_contact_q(param_t* _q, qvalue_t* _r);
00084 
00085 
00086 #endif /* SIP_MSG_H */

Generated on Thu May 24 10:00:30 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6