1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef _SIPCC_SDP_PRIVATE_H_
6 #define _SIPCC_SDP_PRIVATE_H_
11 extern const sdp_attrarray_t sdp_attr
[];
12 extern const sdp_namearray_t sdp_media
[];
13 extern const sdp_namearray_t sdp_nettype
[];
14 extern const sdp_namearray_t sdp_addrtype
[];
15 extern const sdp_namearray_t sdp_transport
[];
16 extern const sdp_namearray_t sdp_encrypt
[];
17 extern const sdp_namearray_t sdp_payload
[];
18 extern const sdp_namearray_t sdp_t38_rate
[];
19 extern const sdp_namearray_t sdp_t38_udpec
[];
20 extern const sdp_namearray_t sdp_qos_strength
[];
21 extern const sdp_namearray_t sdp_qos_direction
[];
22 extern const sdp_namearray_t sdp_qos_status_type
[];
23 extern const sdp_namearray_t sdp_curr_type
[];
24 extern const sdp_namearray_t sdp_des_type
[];
25 extern const sdp_namearray_t sdp_conf_type
[];
26 extern const sdp_namearray_t sdp_mediadir_role
[];
27 extern const sdp_namearray_t sdp_fmtp_codec_param
[];
28 extern const sdp_namearray_t sdp_fmtp_codec_param_val
[];
29 extern const sdp_namearray_t sdp_silencesupp_pref
[];
30 extern const sdp_namearray_t sdp_silencesupp_siduse
[];
31 extern const sdp_namearray_t sdp_srtp_context_crypto_suite
[];
32 extern const sdp_namearray_t sdp_bw_modifier_val
[];
33 extern const sdp_namearray_t sdp_group_attr_val
[];
34 extern const sdp_namearray_t sdp_ssrc_group_attr_val
[];
35 extern const sdp_namearray_t sdp_src_filter_mode_val
[];
36 extern const sdp_namearray_t sdp_rtcp_unicast_mode_val
[];
37 extern const sdp_namearray_t sdp_rtcp_fb_type_val
[];
38 extern const sdp_namearray_t sdp_rtcp_fb_nack_type_val
[];
39 extern const sdp_namearray_t sdp_rtcp_fb_ack_type_val
[];
40 extern const sdp_namearray_t sdp_rtcp_fb_ccm_type_val
[];
41 extern const sdp_namearray_t sdp_setup_type_val
[];
42 extern const sdp_namearray_t sdp_connection_type_val
[];
45 extern const sdp_srtp_crypto_suite_list sdp_srtp_crypto_suite_array
[];
46 /* Function Prototypes */
49 extern sdp_mca_t
*sdp_find_media_level(sdp_t
*sdp_p
, uint16_t level
);
50 extern sdp_bw_data_t
* sdp_find_bw_line (sdp_t
*sdp_ptr
, uint16_t level
, uint16_t inst_num
);
54 sdp_build_attr_fmtp_params (sdp_t
*sdp_p
, sdp_fmtp_t
*attr_p
, flex_string
*fs
);
56 extern sdp_result_e
sdp_parse_attribute(sdp_t
*sdp_p
, uint16_t level
,
58 extern sdp_result_e
sdp_parse_attr_simple_string(sdp_t
*sdp_p
,
59 sdp_attr_t
*attr_p
, const char *ptr
);
60 extern sdp_result_e
sdp_build_attr_simple_string(sdp_t
*sdp_p
,
61 sdp_attr_t
*attr_p
, flex_string
*fs
);
62 extern sdp_result_e
sdp_parse_attr_simple_u32(sdp_t
*sdp_p
,
63 sdp_attr_t
*attr_p
, const char *ptr
);
64 extern sdp_result_e
sdp_build_attr_simple_u32(sdp_t
*sdp_p
,
65 sdp_attr_t
*attr_p
, flex_string
*fs
);
66 extern sdp_result_e
sdp_parse_attr_simple_bool(sdp_t
*sdp_p
,
67 sdp_attr_t
*attr_p
, const char *ptr
);
68 extern sdp_result_e
sdp_build_attr_simple_bool(sdp_t
*sdp_p
,
69 sdp_attr_t
*attr_p
, flex_string
*fs
);
70 extern sdp_result_e
sdp_parse_attr_maxprate(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
72 extern sdp_result_e
sdp_parse_attr_fmtp(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
74 extern sdp_result_e
sdp_build_attr_fmtp(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
76 extern sdp_result_e
sdp_parse_attr_sctpmap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
78 extern sdp_result_e
sdp_build_attr_sctpmap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
80 extern sdp_result_e
sdp_parse_attr_msid(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
82 extern sdp_result_e
sdp_build_attr_msid(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
84 extern sdp_result_e
sdp_parse_attr_msid_semantic(sdp_t
*sdp_p
,
87 extern sdp_result_e
sdp_build_attr_msid_semantic(sdp_t
*sdp_p
,
90 extern sdp_result_e
sdp_parse_attr_ssrc(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
92 extern sdp_result_e
sdp_build_attr_ssrc(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
94 extern sdp_result_e
sdp_parse_attr_ssrc_group(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
96 extern sdp_result_e
sdp_build_attr_ssrc_group(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
98 extern sdp_result_e
sdp_parse_attr_direction(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
100 extern sdp_result_e
sdp_build_attr_direction(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
102 extern sdp_result_e
sdp_parse_attr_qos(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
104 extern sdp_result_e
sdp_build_attr_qos(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
106 extern sdp_result_e
sdp_parse_attr_curr(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
108 extern sdp_result_e
sdp_build_attr_curr (sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
110 extern sdp_result_e
sdp_parse_attr_des(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
112 extern sdp_result_e
sdp_build_attr_des (sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
114 extern sdp_result_e
sdp_parse_attr_conf(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
116 extern sdp_result_e
sdp_build_attr_conf (sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
118 extern sdp_result_e
sdp_parse_attr_transport_map(sdp_t
*sdp_p
,
119 sdp_attr_t
*attr_p
, const char *ptr
);
120 extern sdp_result_e
sdp_build_attr_transport_map(sdp_t
*sdp_p
,
121 sdp_attr_t
*attr_p
, flex_string
*fs
);
122 extern sdp_result_e
sdp_parse_attr_subnet(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
124 extern sdp_result_e
sdp_build_attr_subnet(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
126 extern sdp_result_e
sdp_parse_attr_t38_ratemgmt(sdp_t
*sdp_p
,
127 sdp_attr_t
*attr_p
, const char *ptr
);
128 extern sdp_result_e
sdp_build_attr_t38_ratemgmt(sdp_t
*sdp_p
,
129 sdp_attr_t
*attr_p
, flex_string
*fs
);
130 extern sdp_result_e
sdp_parse_attr_t38_udpec(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
132 extern sdp_result_e
sdp_build_attr_t38_udpec(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
134 extern sdp_result_e
sdp_parse_attr_cap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
136 extern sdp_result_e
sdp_build_attr_cap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
138 extern sdp_result_e
sdp_parse_attr_cpar(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
140 extern sdp_result_e
sdp_build_attr_cpar(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
142 extern sdp_result_e
sdp_parse_attr_pc_codec(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
144 extern sdp_result_e
sdp_build_attr_pc_codec(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
146 extern sdp_result_e
sdp_parse_attr_xcap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
148 extern sdp_result_e
sdp_build_attr_xcap(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
150 extern sdp_result_e
sdp_parse_attr_xcpar(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
152 extern sdp_result_e
sdp_build_attr_xcpar(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
154 extern sdp_result_e
sdp_parse_attr_rtcp(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
156 extern sdp_result_e
sdp_build_attr_rtcp(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
158 extern sdp_result_e
sdp_parse_attr_rtr(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
160 extern sdp_result_e
sdp_build_attr_rtr(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
162 extern sdp_result_e
sdp_parse_attr_comediadir(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
164 extern sdp_result_e
sdp_build_attr_comediadir(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
166 extern sdp_result_e
sdp_parse_attr_silencesupp(sdp_t
*sdp_p
,
169 extern sdp_result_e
sdp_build_attr_silencesupp(sdp_t
*sdp_p
,
172 extern sdp_result_e
sdp_parse_attr_srtpcontext(sdp_t
*sdp_p
,
175 extern sdp_result_e
sdp_build_attr_srtpcontext(sdp_t
*sdp_p
,
178 extern sdp_result_e
sdp_parse_attr_rtcp_fb(sdp_t
*sdp_p
,
181 extern sdp_result_e
sdp_build_attr_rtcp_fb(sdp_t
*sdp_p
,
184 extern sdp_result_e
sdp_parse_attr_setup(sdp_t
*sdp_p
,
187 extern sdp_result_e
sdp_build_attr_setup(sdp_t
*sdp_p
,
190 extern sdp_result_e
sdp_parse_attr_connection(sdp_t
*sdp_p
,
193 extern sdp_result_e
sdp_build_attr_connection(sdp_t
*sdp_p
,
196 extern sdp_result_e
sdp_parse_attr_extmap(sdp_t
*sdp_p
,
199 extern sdp_result_e
sdp_build_attr_extmap(sdp_t
*sdp_p
,
202 extern sdp_result_e
sdp_parse_attr_mptime(
203 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
204 extern sdp_result_e
sdp_build_attr_mptime(
205 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
206 extern sdp_result_e
sdp_parse_attr_x_sidin(
207 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
208 extern sdp_result_e
sdp_build_attr_x_sidin(
209 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
211 extern sdp_result_e
sdp_parse_attr_x_sidout(
212 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
213 extern sdp_result_e
sdp_build_attr_x_sidout(
214 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
216 extern sdp_result_e
sdp_parse_attr_x_confid(
217 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
218 extern sdp_result_e
sdp_build_attr_x_confid(
219 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
221 extern sdp_result_e
sdp_parse_attr_group(
222 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
223 extern sdp_result_e
sdp_build_attr_group(
224 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
226 extern sdp_result_e
sdp_parse_attr_source_filter(
227 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
228 extern sdp_result_e
sdp_build_source_filter(
229 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
231 extern sdp_result_e
sdp_parse_attr_rtcp_unicast(
232 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
233 extern sdp_result_e
sdp_build_attr_rtcp_unicast(
234 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
236 extern sdp_result_e
sdp_build_attr_ice_attr (
237 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
238 extern sdp_result_e
sdp_parse_attr_ice_attr (
239 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
241 extern sdp_result_e
sdp_build_attr_simple_flag (
242 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, flex_string
*fs
);
243 extern sdp_result_e
sdp_parse_attr_simple_flag (
244 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
246 extern sdp_result_e
sdp_parse_attr_complete_line (
247 sdp_t
*sdp_p
, sdp_attr_t
*attr_p
, const char *ptr
);
248 extern sdp_result_e
sdp_parse_attr_long_line(sdp_t
*sdp_p
,
249 sdp_attr_t
*attr_p
, const char *ptr
);
250 extern sdp_result_e
sdp_build_attr_long_line(sdp_t
*sdp_p
,
251 sdp_attr_t
*attr_p
, flex_string
*fs
);
253 /* sdp_attr_access.c */
254 extern void sdp_free_attr(sdp_attr_t
*attr_p
);
255 extern sdp_result_e
sdp_find_attr_list(sdp_t
*sdp_p
, uint16_t level
, uint8_t cap_num
,
256 sdp_attr_t
**attr_p
, char *fname
);
257 extern sdp_attr_t
*sdp_find_attr(sdp_t
*sdp_p
, uint16_t level
, uint8_t cap_num
,
258 sdp_attr_e attr_type
, uint16_t inst_num
);
259 extern sdp_attr_t
*sdp_find_capability(sdp_t
*sdp_p
, uint16_t level
, uint8_t cap_num
);
262 extern const char *sdp_get_attr_name(sdp_attr_e attr_type
);
263 extern const char *sdp_get_media_name(sdp_media_e media_type
);
264 extern const char *sdp_get_network_name(sdp_nettype_e network_type
);
265 extern const char *sdp_get_address_name(sdp_addrtype_e addr_type
);
266 extern const char *sdp_get_transport_name(sdp_transport_e transport_type
);
267 extern const char *sdp_get_encrypt_name(sdp_encrypt_type_e encrypt_type
);
268 extern const char *sdp_get_payload_name(sdp_payload_e payload
);
269 extern const char *sdp_get_t38_ratemgmt_name(sdp_t38_ratemgmt_e rate
);
270 extern const char *sdp_get_t38_udpec_name(sdp_t38_udpec_e udpec
);
271 extern const char *sdp_get_qos_strength_name(sdp_qos_strength_e strength
);
272 extern const char *sdp_get_qos_direction_name(sdp_qos_dir_e direction
);
273 extern const char *sdp_get_qos_status_type_name(sdp_qos_status_types_e status_type
);
274 extern const char *sdp_get_curr_type_name(sdp_curr_type_e curr_type
);
275 extern const char *sdp_get_des_type_name(sdp_des_type_e des_type
);
276 extern const char *sdp_get_conf_type_name(sdp_conf_type_e conf_type
);
277 extern const char *sdp_get_mediadir_role_name (sdp_mediadir_role_e role
);
278 extern const char *sdp_get_silencesupp_pref_name(sdp_silencesupp_pref_e pref
);
279 extern const char *sdp_get_silencesupp_siduse_name(sdp_silencesupp_siduse_e
282 extern const char *sdp_get_group_attr_name(sdp_group_attr_e group_attr
);
283 extern const char *sdp_get_ssrc_group_attr_name(sdp_ssrc_group_attr_e group_attr
);
284 extern const char *sdp_get_src_filter_mode_name(sdp_src_filter_mode_e type
);
285 extern const char *sdp_get_rtcp_unicast_mode_name(sdp_rtcp_unicast_mode_e type
);
288 extern sdp_result_e
sdp_parse_version(sdp_t
*sdp_p
, uint16_t token
,
290 extern sdp_result_e
sdp_build_version(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
291 extern sdp_result_e
sdp_parse_owner(sdp_t
*sdp_p
, uint16_t token
,
293 extern sdp_result_e
sdp_build_owner(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
294 extern sdp_result_e
sdp_parse_sessname(sdp_t
*sdp_p
, uint16_t token
,
296 extern sdp_result_e
sdp_build_sessname(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
297 extern sdp_result_e
sdp_parse_sessinfo(sdp_t
*sdp_p
, uint16_t token
,
299 extern sdp_result_e
sdp_build_sessinfo(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
300 extern sdp_result_e
sdp_parse_uri(sdp_t
*sdp_p
, uint16_t token
, const char *ptr
);
301 extern sdp_result_e
sdp_build_uri(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
302 extern sdp_result_e
sdp_parse_email(sdp_t
*sdp_p
, uint16_t token
, const char *ptr
);
303 extern sdp_result_e
sdp_build_email(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
304 extern sdp_result_e
sdp_parse_phonenum(sdp_t
*sdp_p
, uint16_t token
,
306 extern sdp_result_e
sdp_build_phonenum(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
307 extern sdp_result_e
sdp_parse_connection(sdp_t
*sdp_p
, uint16_t token
,
309 extern sdp_result_e
sdp_build_connection(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
310 extern sdp_result_e
sdp_parse_bandwidth(sdp_t
*sdp_p
, uint16_t token
,
312 extern sdp_result_e
sdp_build_bandwidth(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
313 extern sdp_result_e
sdp_parse_timespec(sdp_t
*sdp_p
, uint16_t token
,
315 extern sdp_result_e
sdp_build_timespec(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
316 extern sdp_result_e
sdp_parse_repeat_time(sdp_t
*sdp_p
, uint16_t token
,
318 extern sdp_result_e
sdp_build_repeat_time(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
319 extern sdp_result_e
sdp_parse_timezone_adj(sdp_t
*sdp_p
, uint16_t token
,
321 extern sdp_result_e
sdp_build_timezone_adj(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
322 extern sdp_result_e
sdp_parse_encryption(sdp_t
*sdp_p
, uint16_t token
,
324 extern sdp_result_e
sdp_build_encryption(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
325 extern sdp_result_e
sdp_parse_media(sdp_t
*sdp_p
, uint16_t token
, const char *ptr
);
326 extern sdp_result_e
sdp_build_media(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
327 extern sdp_result_e
sdp_parse_attribute(sdp_t
*sdp_p
, uint16_t token
,
329 extern sdp_result_e
sdp_build_attribute(sdp_t
*sdp_p
, uint16_t token
, flex_string
*fs
);
331 extern void sdp_parse_payload_types(sdp_t
*sdp_p
, sdp_mca_t
*mca_p
,
334 sdp_parse_attr_sdescriptions(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
338 sdp_build_attr_sdescriptions(sdp_t
*sdp_p
, sdp_attr_t
*attr_p
,
343 extern sdp_mca_t
*sdp_alloc_mca(uint32_t line
);
344 extern tinybool
sdp_validate_maxprate(const char *string_parm
);
345 extern char *sdp_findchar(const char *ptr
, char *char_list
);
346 extern const char *sdp_getnextstrtok(const char *str
, char *tokenstr
, unsigned tokenstr_len
,
347 const char *delim
, sdp_result_e
*result
);
348 extern uint32_t sdp_getnextnumtok(const char *str
, const char **str_end
,
349 const char *delim
, sdp_result_e
*result
);
350 extern uint32_t sdp_getnextnumtok_or_null(const char *str
, const char **str_end
,
351 const char *delim
, tinybool
*null_ind
,
352 sdp_result_e
*result
);
355 tinybool
verify_sdescriptions_mki(char *buf
, char *mkiVal
, uint16_t *mkiLen
);
358 tinybool
verify_sdescriptions_lifetime(char *buf
);
360 /* sdp_services_xxx.c */
361 extern void sdp_dump_buffer(char *_ptr
, int _size_bytes
);
363 tinybool
sdp_checkrange(sdp_t
*sdp
, char *num
, ulong
* lval
);
365 #endif /* _SDP_PRIVATE_H_ */