summaryrefslogtreecommitdiff
path: root/channels/sip/include/sip.h
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2014-02-10 18:28:35 +0000
committerCorey Farrell <git@cfware.com>2014-02-10 18:28:35 +0000
commitcb4e2107735dc05c1ad96b6a955c056e06b8dc1c (patch)
tree7200a261115a632a38ae4f12049359ee061cc4ee /channels/sip/include/sip.h
parent72bf9b13150f50198a302c365c6c3274d38c2ebc (diff)
chan_sip: Isolate code that manages struct sip_route.
* Move route code to sip/route.c + sip/include/route.h * Rename functions to sip_route_* * Replace ad-hoc list code with macro's from linkedlists.h * Create sip_route_process_header() to processes Path and Record-Route headers (previously done with different code in build_route and build_path) * Add use of const where possible * Move struct uriparams, struct contact and contactliststruct from sip.h to reqresp_parser.h. sip/route.c uses reqresp_parser.h but not sip.h, this was a problem. These moved declares are not used outside of reqresp_parser. * While modifying reqprep() the lack of {} caused me trouble. I added them. * Code outside route.c treats sip_route as an opaque structure, using macro's or procedures for all access. (closes issue ASTERISK-22582) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3173/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@407926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sip/include/sip.h')
-rw-r--r--channels/sip/include/sip.h40
1 files changed, 4 insertions, 36 deletions
diff --git a/channels/sip/include/sip.h b/channels/sip/include/sip.h
index 0b88dae43..7e2d0b960 100644
--- a/channels/sip/include/sip.h
+++ b/channels/sip/include/sip.h
@@ -39,6 +39,8 @@
#include "asterisk/netsock2.h"
#include "asterisk/features_config.h"
+#include "route.h"
+
#ifndef FALSE
#define FALSE 0
#endif
@@ -847,12 +849,6 @@ struct sip_invite_param {
struct sip_proxy *outboundproxy; /*!< Outbound proxy URI */
};
-/*! \brief Structure to save routing information for a SIP session */
-struct sip_route {
- struct sip_route *next;
- char hop[0];
-};
-
/*! \brief Structure to store Via information */
struct sip_via {
char *via;
@@ -1119,7 +1115,7 @@ struct sip_pvt {
struct ast_sockaddr ourip; /*!< Our IP (as seen from the outside) */
enum transfermodes allowtransfer; /*!< REFER: restriction scheme */
struct ast_channel *owner; /*!< Who owns us (if we have an owner) */
- struct sip_route *route; /*!< Head of linked list of routing steps (fm Record-Route) */
+ struct sip_route route; /*!< List of routing steps (fm Record-Route) */
struct sip_notify *notify; /*!< Custom notify type */
struct sip_auth_container *peerauth;/*!< Realm authentication credentials */
int noncecount; /*!< Nonce-count */
@@ -1346,7 +1342,7 @@ struct sip_peer {
int timer_t1; /*!< The maximum T1 value for the peer */
int timer_b; /*!< The maximum timer B (transaction timeouts) */
int fromdomainport; /*!< The From: domain port */
- struct sip_route *path; /*!< Head of linked list of out-of-dialog outgoing routing steps (fm Path headers) */
+ struct sip_route path; /*!< List of out-of-dialog outgoing routing steps (fm Path headers) */
/*XXX Seems like we suddenly have two flags with the same content. Why? To be continued... */
enum sip_peer_type type; /*!< Distinguish between "user" and "peer" types. This is used solely for CLI and manager commands */
@@ -1804,34 +1800,6 @@ struct sip_monitor_instance {
struct sip_epa_entry *suspension_entry;
};
-/*!
- * \brief uri parameters
- *
- */
-
-struct uriparams {
- char *transport;
- char *user;
- char *method;
- char *ttl;
- char *maddr;
- int lr;
-};
-
-struct contact {
- AST_LIST_ENTRY(contact) list;
- char *name;
- char *user;
- char *pass;
- char *hostport;
- struct uriparams params;
- char *headers;
- char *expires;
- char *q;
-};
-
-AST_LIST_HEAD_NOLOCK(contactliststruct, contact);
-
/*! \brief List of well-known SIP options. If we get this in a require,
we should check the list and answer accordingly. */
static const struct cfsip_options {