diff options
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; -} |