rtpproxy.h

00001 /* $Id: nathelper.c 1808 2007-03-10 17:36:19Z bogdan_iancu $
00002  *
00003  * Copyright (C) 2003 Porta Software Ltd
00004  *
00005  * This file is part of Kamailio, a free SIP server.
00006  *
00007  * Kamailio is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 2 of the License, or
00010  * (at your option) any later version
00011  *
00012  * Kamailio is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020  *
00021  * History:
00022  * ---------
00023  * 2007-04-13   splitted from nathelper.c (ancuta)
00024 */
00025 
00026 
00027 #ifndef _RTPPROXY_H
00028 #define _RTPPROXY_H
00029 
00030 #include "../../str.h"
00031 
00032 /* Handy macros */
00033 #define STR2IOVEC(sx, ix)       do {(ix).iov_base = (sx).s; (ix).iov_len = (sx).len;} while(0)
00034 #define SZ2IOVEC(sx, ix)        do {(ix).iov_base = (sx); (ix).iov_len = strlen(sx);} while(0)
00035 
00036 struct rtpp_node {
00037         unsigned int            idx;                    /* overall index */
00038         str                                     rn_url;                 /* unparsed, deletable */
00039         int                                     rn_umode;
00040         char                            *rn_address;    /* substring of rn_url */
00041         int                                     rn_disabled;    /* found unaccessible? */
00042         unsigned                        rn_weight;              /* for load balancing */
00043         unsigned int            rn_recheck_ticks;
00044         int                     rn_rep_supported;
00045         int                     rn_ptl_supported;
00046         struct rtpp_node        *rn_next;
00047 };
00048 
00049 
00050 struct rtpp_set{
00051         unsigned int            id_set;
00052         unsigned                        weight_sum;
00053         unsigned int            rtpp_node_count;
00054         int                             set_disabled;
00055         unsigned int            set_recheck_ticks;
00056         struct rtpp_node        *rn_first;
00057         struct rtpp_node        *rn_last;
00058         struct rtpp_set     *rset_next;
00059 };
00060 
00061 
00062 struct rtpp_set_head{
00063         struct rtpp_set         *rset_first;
00064         struct rtpp_set         *rset_last;
00065 };
00066 
00067 /* Functions from nathelper */
00068 struct rtpp_node *select_rtpp_node(str, int);
00069 char *send_rtpp_command(struct rtpp_node *, struct iovec *, int);
00070 
00071 #endif