diff options
author | George Joseph <gjoseph@digium.com> | 2017-03-02 16:11:06 -0700 |
---|---|---|
committer | George Joseph <gjoseph@digium.com> | 2017-03-14 12:26:32 -0600 |
commit | 8470c2bdea89f1ed89d8a773d775de96ededf3fb (patch) | |
tree | 82c15910f51fa05dca89ed75d3528b9e063b0805 /main/sdp_options.c | |
parent | 018e01543dd7392fd99873090b1781c05362b3cf (diff) |
RFC sdp: Initial SDP creation
* Added additional fields to ast_sdp_options.
* Re-organized ast_sdp.
* Updated field names to correspond to RFC4566 terminology.
* Created allocs/frees for SDP children.
* Created getters/setters for SDP children where appropriate.
* Added ast_sdp_create_from_state.
* Refactored res_sdp_translator_pjmedia for changes.
Change-Id: Iefbd877af7f5a4d3c74deead1bff8802661b0d48
Diffstat (limited to 'main/sdp_options.c')
-rw-r--r-- | main/sdp_options.c | 124 |
1 files changed, 55 insertions, 69 deletions
diff --git a/main/sdp_options.c b/main/sdp_options.c index e18dfa55a..ca076ac7b 100644 --- a/main/sdp_options.c +++ b/main/sdp_options.c @@ -21,23 +21,63 @@ #include "asterisk/utils.h" #include "asterisk/sdp_options.h" -struct ast_sdp_options { - enum ast_sdp_options_ice ice; - int telephone_event; - enum ast_sdp_options_repr repr; - enum ast_sdp_options_encryption encryption; -}; +#include "sdp_private.h" #define DEFAULT_ICE AST_SDP_ICE_DISABLED #define DEFAULT_TELEPHONE_EVENT 0 -#define DEFAULT_REPR AST_SDP_REPR_STRING +#define DEFAULT_IMPL AST_SDP_IMPL_STRING #define DEFAULT_ENCRYPTION AST_SDP_ENCRYPTION_DISABLED +#define DEFINE_STRINGFIELD_GETTERS_SETTERS_FOR(field, assert_on_null) \ +void ast_sdp_options_set_##field(struct ast_sdp_options *options, const char *value) \ +{ \ + ast_assert(options != NULL); \ + if ((assert_on_null)) ast_assert(!ast_strlen_zero(value)); \ + if (!strcmp(value, options->field)) return; \ + ast_string_field_set(options, field, value); \ +} \ +const char *ast_sdp_options_get_##field(struct ast_sdp_options *options) \ +{ \ + ast_assert(options != NULL); \ + return options->field; \ +} \ + +#define DEFINE_GETTERS_SETTERS_FOR(type, field) \ +void ast_sdp_options_set_##field(struct ast_sdp_options *options, type value) \ +{ \ + ast_assert(options != NULL); \ + options->field = value; \ +} \ +type ast_sdp_options_get_##field(struct ast_sdp_options *options) \ +{ \ + ast_assert(options != NULL); \ + return options->field; \ +} \ + +DEFINE_STRINGFIELD_GETTERS_SETTERS_FOR(media_address, 0); +DEFINE_STRINGFIELD_GETTERS_SETTERS_FOR(sdpowner, 0); +DEFINE_STRINGFIELD_GETTERS_SETTERS_FOR(sdpsession, 0); +DEFINE_STRINGFIELD_GETTERS_SETTERS_FOR(rtp_engine, 0); + +DEFINE_GETTERS_SETTERS_FOR(unsigned int, bind_rtp_to_media_address); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, rtp_symmetric); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, telephone_event); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, rtp_ipv6); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, g726_non_standard); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, locally_held); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, tos_audio); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, cos_audio); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, tos_video); +DEFINE_GETTERS_SETTERS_FOR(unsigned int, cos_video); +DEFINE_GETTERS_SETTERS_FOR(enum ast_sdp_options_ice, ice); +DEFINE_GETTERS_SETTERS_FOR(enum ast_sdp_options_impl, impl); +DEFINE_GETTERS_SETTERS_FOR(enum ast_sdp_options_encryption, encryption); + static void set_defaults(struct ast_sdp_options *options) { options->ice = DEFAULT_ICE; options->telephone_event = DEFAULT_TELEPHONE_EVENT; - options->repr = DEFAULT_REPR; + options->impl = DEFAULT_IMPL; options->encryption = DEFAULT_ENCRYPTION; } @@ -49,72 +89,18 @@ struct ast_sdp_options *ast_sdp_options_alloc(void) if (!options) { return NULL; } + + if (ast_string_field_init(options, 256)) { + ast_free(options); + return NULL; + } + set_defaults(options); return options; } void ast_sdp_options_free(struct ast_sdp_options *options) { + ast_string_field_free_memory(options); ast_free(options); } - -int ast_sdp_options_set_ice(struct ast_sdp_options *options, enum ast_sdp_options_ice ice_setting) -{ - ast_assert(options != NULL); - - options->ice = ice_setting; - return 0; -} - -enum ast_sdp_options_ice ast_sdp_options_get_ice(const struct ast_sdp_options *options) -{ - ast_assert(options != NULL); - - return options->ice; -} - -int ast_sdp_options_set_telephone_event(struct ast_sdp_options *options, int telephone_event_enabled) -{ - ast_assert(options != NULL); - - options->telephone_event = telephone_event_enabled; - return 0; -} - -int ast_sdp_options_get_telephone_event(const struct ast_sdp_options *options) -{ - ast_assert(options != NULL); - - return options->telephone_event; -} - -int ast_sdp_options_set_repr(struct ast_sdp_options *options, enum ast_sdp_options_repr repr) -{ - ast_assert(options != NULL); - - options->repr = repr; - return 0; -} - -enum ast_sdp_options_repr ast_sdp_options_get_repr(const struct ast_sdp_options *options) -{ - ast_assert(options != NULL); - - return options->repr; -} - -int ast_sdp_options_set_encryption(struct ast_sdp_options *options, - enum ast_sdp_options_encryption encryption) -{ - ast_assert(options != NULL); - - options->encryption = encryption; - return 0; -} - -enum ast_sdp_options_encryption ast_sdp_options_get_encryption(const struct ast_sdp_options *options) -{ - ast_assert(options != NULL); - - return options->encryption; -} |