s/registrar/sip_msg.h

00001 /*
00002  * $Id$
00003  *
00004  * SIP message related functions
00005  *
00006  * Copyright (C) 2001-2003 FhG Fokus
00007  *
00008  * This file is part of ser, a free SIP server.
00009  *
00010  * ser 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  * For a license to use the ser software under conditions
00016  * other than those described here, or to purchase support for this
00017  * software, please contact iptel.org by e-mail at the following addresses:
00018  *    info@iptel.org
00019  *
00020  * ser is distributed in the hope that it will be useful,
00021  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  * GNU General Public License for more details.
00024  *
00025  * You should have received a copy of the GNU General Public License 
00026  * along with this program; if not, write to the Free Software 
00027  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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 /*
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 /*
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 /*
00055  * Get the first contact in message
00056  */
00057 contact_t* get_first_contact(struct sip_msg* _m);
00058 
00059 
00060 /* 
00061  * Get next contact in message
00062  */
00063 contact_t* get_next_contact(contact_t* _c);
00064 
00065 
00066 /*
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 int calc_contact_expires(struct sip_msg* _m, param_t* _ep, int* _e);
00076 
00077 
00078 /*
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 */