[asterisk-bugs] [JIRA] (ASTERISK-22135) res_sip: Restructure ast_sip_endpoint to have better structure

Matt Jordan (JIRA) noreply at issues.asterisk.org
Sat Jul 20 16:44:03 CDT 2013


Matt Jordan created ASTERISK-22135:
--------------------------------------

             Summary: res_sip: Restructure ast_sip_endpoint to have better structure
                 Key: ASTERISK-22135
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22135
             Project: Asterisk
          Issue Type: Improvement
          Components: Resources/res_sip
    Affects Versions: 12
            Reporter: Matt Jordan


It has gotten quite large:

{noformat}
/*!
 * \brief An entity with which Asterisk communicates
 */
struct ast_sip_endpoint {
	SORCERY_OBJECT(details);
	AST_DECLARE_STRING_FIELDS(
		/*! Context to send incoming calls to */
		AST_STRING_FIELD(context);
		/*! Name of an explicit transport to use */
		AST_STRING_FIELD(transport);
		/*! Outbound proxy to use */
		AST_STRING_FIELD(outbound_proxy);
		/*! Explicit AORs to dial if none are specified */
		AST_STRING_FIELD(aors);
                /*! Musiconhold class to suggest that the other side use when placing on hold */
                AST_STRING_FIELD(mohsuggest);
		/*! Optional external media address to use in SDP */
		AST_STRING_FIELD(external_media_address);
		/*! Configured voicemail boxes for this endpoint. Used for MWI */
		AST_STRING_FIELD(mailboxes);
		/*! Configured RTP engine for this endpoint. */
		AST_STRING_FIELD(rtp_engine);
		/*! Configured tone zone for this endpoint. */
		AST_STRING_FIELD(zone);
		/*! Configured language for this endpoint. */
		AST_STRING_FIELD(language);
		/*! Feature to enact when one-touch recording INFO with Record: On is received */
		AST_STRING_FIELD(recordonfeature);
		/*! Feature to enact when one-touch recording INFO with Record: Off is received */
		AST_STRING_FIELD(recordofffeature);
		/*! SDP origin username */
		AST_STRING_FIELD(sdpowner);
		/*! SDP session name */
		AST_STRING_FIELD(sdpsession);
		/*! Default username to place in From header */
		AST_STRING_FIELD(fromuser);
		/*! Domain to place in From header */
		AST_STRING_FIELD(fromdomain);
		/*! Username to use when sending MWI NOTIFYs to this endpoint */
		AST_STRING_FIELD(mwi_from);
	);
	/*! Identification information for this endpoint */
	struct ast_party_id id;
	/*! Domain to which this endpoint belongs */
	struct ast_sip_domain *domain;
	/*! Address of record for incoming registrations */
	struct ast_sip_aor *aor;
	/*! Codec preferences */
	struct ast_codec_pref prefs;
	/*! Configured codecs */
	struct ast_format_cap *codecs;
	/*! Names of inbound authentication credentials */
	const char **sip_inbound_auths;
	/*! Number of configured auths */
	size_t num_inbound_auths;
	/*! Names of outbound authentication credentials */
	const char **sip_outbound_auths;
	/*! Number of configured outbound auths */
	size_t num_outbound_auths;
	/*! DTMF mode to use with this endpoint */
	enum ast_sip_dtmf_mode dtmf;
	/*! Whether IPv6 RTP is enabled or not */
	unsigned int rtp_ipv6;
	/*! Whether symmetric RTP is enabled or not */
	unsigned int rtp_symmetric;
	/*! Whether ICE support is enabled or not */
	unsigned int ice_support;
	/*! Whether to use the "ptime" attribute received from the endpoint or not */
	unsigned int use_ptime;
	/*! Whether to force using the source IP address/port for sending responses */
	unsigned int force_rport;
	/*! Whether to rewrite the Contact header with the source IP address/port or not */
	unsigned int rewrite_contact;
	/*! Enabled SIP extensions */
	unsigned int extensions;
	/*! Minimum session expiration period, in seconds */
	unsigned int min_se;
	/*! Session expiration period, in seconds */
	unsigned int sess_expires;
	/*! List of outbound registrations */
	AST_LIST_HEAD_NOLOCK(, ast_sip_registration) registrations;
	/*! Method(s) by which the endpoint should be identified. */
	enum ast_sip_endpoint_identifier_type ident_method;
	/*! Boolean indicating if direct_media is permissible */
	unsigned int direct_media;
	/*! When using direct media, which method should be used */
	enum ast_sip_session_refresh_method direct_media_method;
	/*! When performing connected line update, which method should be used */
	enum ast_sip_session_refresh_method connected_line_method;
	/*! Take steps to mitigate glare for direct media */
	enum ast_sip_direct_media_glare_mitigation direct_media_glare_mitigation;
	/*! Do not attempt direct media session refreshes if a media NAT is detected */
	unsigned int disable_direct_media_on_nat;
	/*! Do we trust the endpoint with our outbound identity? */
	unsigned int trust_id_outbound;
	/*! Do we trust identity information that originates externally (e.g. P-Asserted-Identity header)? */
	unsigned int trust_id_inbound;
	/*! Do we send P-Asserted-Identity headers to this endpoint? */
	unsigned int send_pai;
	/*! Do we send Remote-Party-ID headers to this endpoint? */
	unsigned int send_rpid;
	/*! Do we add Diversion headers to applicable outgoing requests/responses? */
	unsigned int send_diversion;
	/*! Should unsolicited MWI be aggregated into a single NOTIFY? */
	unsigned int aggregate_mwi;
	/*! Do we use media encryption? what type? */
	enum ast_sip_session_media_encryption media_encryption;
	/*! Do we use AVPF exclusively for this endpoint? */
	unsigned int use_avpf;
	/*! Is one-touch recording permitted? */
	unsigned int one_touch_recording;
	/*! Boolean indicating if ringing should be sent as inband progress */
	unsigned int inband_progress;
	/*! Call group */
	ast_group_t callgroup;
	/*! Pickup group */
	ast_group_t pickupgroup;
	/*! Named call group */
	struct ast_namedgroups *named_callgroups;
	/*! Named pickup group */
	struct ast_namedgroups *named_pickupgroups;
	/*! Pointer to the persistent Asterisk endpoint */
	struct ast_endpoint *persistent;
	/*! The number of channels at which busy device state is returned */
	unsigned int devicestate_busy_at;
	/*! Determines if transfers (using REFER) are allowed by this endpoint */
	unsigned int allowtransfer;
	/*! DSCP TOS bits for audio streams */
	unsigned int tos_audio;
	/*! Priority for audio streams */
	unsigned int cos_audio;
	/*! DSCP TOS bits for video streams */
	unsigned int tos_video;
	/*! Priority for video streams */
	unsigned int cos_video;
	/*! Indicates if endpoint is allowed to initiate subscriptions */
	unsigned int allowsubscribe;
	/*! The minimum allowed expiration for subscriptions from endpoint */
	unsigned int subminexpiry;
};
{noformat}

Things that could be grouped together:

* Media settings
** With possible media subtypes. This will also eliminate a lot of {{thing_type}} as a convention.
* Authentication/Trust (maybe)
* Transport/NAT settings
* Party Identification

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list