123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /*
- * $Id$
- *
- * Copyright (C) 2007 SOMA Networks, INC.
- * Written By Ovidiu Sas
- *
- * This file is part of Kamailio, a free SIP server.
- *
- * Kamailio is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * Kamailio is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- *
- * History:
- * --------
- * 2007-07-16 initial version (osas)
- */
- #ifndef _QOS_CTX_HELPERS_H_
- #define _QOS_CTX_HELPERS_H_
- #include "../../parser/sdp/sdp.h"
- #include "qos_cb.h"
- #define QOS_CALLER 0
- #define QOS_CALLEE 1
- typedef struct qos_sdp_st {
- struct qos_sdp_st *prev;
- struct qos_sdp_st *next;
- unsigned int method_dir; /* the transaction initiator: CALLER/CALLEE */
- int method_id; /* the method id that is carrying the sdp */
- str method; /* the method that is carrying the sdp */
- str cseq; /* the cseq of the method */
- unsigned int negotiation; /* the negotiation type */
- sdp_session_cell_t *sdp_session[2]; /* CALLER's and CALLEE's sdp */
- } qos_sdp_t;
- /**
- * The QoS context.
- */
- typedef struct qos_ctx_st {
- qos_sdp_t *negotiated_sdp;
- qos_sdp_t *pending_sdp;
- gen_lock_t lock;
- struct qos_head_cbl cbs;
- } qos_ctx_t;
- /*
-
- ** AFTER INVITE/183 **
- qos_ctx:
- +----------------+
- | *negotiated_sdp|
- +----------------+ qos_sdp (pending)
- | *pending_sdp------->+----------------+
- +----------------+ | *prev |
- +----------------+
- | *next |
- +----------------+
- | method_dir | sdp_session (caller)
- | method_id | +-->+----------+
- | method | | | |
- | cseq | | | |
- | negotiation | | +----------+
- +----------------+ |
- | sdp_session[0]----+
- +----------------+ sdp_session (callee)
- | sdp_session[1]------->+----------+
- +----------------+ | |
- | |
- +----------+
- ** AFTER INVITE/200ok **
- qos_ctx:
- +----------------+ qos_sdp (negotiated)
- | *negotiated_sdp---->+----------------+
- +----------------+ | *prev |
- | *pending_sdp | +----------------+
- +----------------+ | *next |
- +----------------+
- | method_dir | sdp_session (caller)
- | method_id | +-->+----------+
- | method | | | |
- | cseq | | | |
- | negotiation | | +----------+
- +----------------+ |
- | sdp_session[0]----+
- +----------------+ sdp_session (callee)
- | sdp_session[1]------->+----------+
- +----------------+ | |
- | |
- +----------+
- */
- qos_ctx_t* build_new_qos_ctx();
- void destroy_qos_ctx(qos_ctx_t *ctx);
- void add_sdp(qos_ctx_t *qos_ctx, unsigned int dir, struct sip_msg *_m, unsigned int role, unsigned int other_role);
- void remove_sdp(qos_ctx_t *qos_ctx, unsigned int dir, struct sip_msg *_m, unsigned int role, unsigned int other_role);
- #endif /* _QOS_CTX_HELPERS_H_ */
|