parse_contact.h

00001 /*
00002  * $Id$
00003  *
00004  * Contact header field body parser
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  * History:
00030  * -------
00031  *  2003-03-25 Adapted to use new parameter parser (janakj)
00032  */
00033 
00034 
00035 #ifndef PARSE_CONTACT_H
00036 #define PARSE_CONTACT_H
00037 
00038 #include <stdio.h>
00039 #include "../hf.h"
00040 #include "../../str.h"
00041 #include "../msg_parser.h"
00042 #include "contact.h"
00043 
00044 
00045 typedef struct contact_body {
00046         unsigned char star;    /* Star contact */
00047         contact_t* contacts;   /* List of contacts */
00048 } contact_body_t;
00049 
00050 
00051 /*
00052  * Parse contact header field body
00053  */
00054 int parse_contact(struct hdr_field* _h);
00055 
00056 
00057 /*
00058  * Free all memory
00059  */
00060 void free_contact(contact_body_t** _c);
00061 
00062 
00063 /*
00064  * Print structure, for debugging only
00065  */
00066 void print_contact(FILE* _o, contact_body_t* _c);
00067 
00068 
00069 /*
00070  * Contact header field iterator, returns next contact if any, it doesn't
00071  * parse message header if not absolutely necessary
00072  */
00073 int contact_iterator(contact_t** c, struct sip_msg* msg, contact_t* prev);
00074 
00075 
00076 #endif /* PARSE_CONTACT_H */