a93a1f58a8763fa69172980b98e3d24720c1136egm/*
a93a1f58a8763fa69172980b98e3d24720c1136egm * CDDL HEADER START
a93a1f58a8763fa69172980b98e3d24720c1136egm *
a93a1f58a8763fa69172980b98e3d24720c1136egm * The contents of this file are subject to the terms of the
a93a1f58a8763fa69172980b98e3d24720c1136egm * Common Development and Distribution License (the "License").
a93a1f58a8763fa69172980b98e3d24720c1136egm * You may not use this file except in compliance with the License.
a93a1f58a8763fa69172980b98e3d24720c1136egm *
a93a1f58a8763fa69172980b98e3d24720c1136egm * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a93a1f58a8763fa69172980b98e3d24720c1136egm * or http://www.opensolaris.org/os/licensing.
a93a1f58a8763fa69172980b98e3d24720c1136egm * See the License for the specific language governing permissions
a93a1f58a8763fa69172980b98e3d24720c1136egm * and limitations under the License.
a93a1f58a8763fa69172980b98e3d24720c1136egm *
a93a1f58a8763fa69172980b98e3d24720c1136egm * When distributing Covered Code, include this CDDL HEADER in each
a93a1f58a8763fa69172980b98e3d24720c1136egm * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a93a1f58a8763fa69172980b98e3d24720c1136egm * If applicable, add the following below this CDDL HEADER, with the
a93a1f58a8763fa69172980b98e3d24720c1136egm * fields enclosed by brackets "[]" replaced with your own identifying
a93a1f58a8763fa69172980b98e3d24720c1136egm * information: Portions Copyright [yyyy] [name of copyright owner]
a93a1f58a8763fa69172980b98e3d24720c1136egm *
a93a1f58a8763fa69172980b98e3d24720c1136egm * CDDL HEADER END
a93a1f58a8763fa69172980b98e3d24720c1136egm */
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm/*
a93a1f58a8763fa69172980b98e3d24720c1136egm * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
a93a1f58a8763fa69172980b98e3d24720c1136egm * Use is subject to license terms.
a93a1f58a8763fa69172980b98e3d24720c1136egm */
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#ifndef _SDP_PARSE_H
a93a1f58a8763fa69172980b98e3d24720c1136egm#define _SDP_PARSE_H
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#pragma ident "%Z%%M% %I% %E% SMI"
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#ifdef __cplusplus
a93a1f58a8763fa69172980b98e3d24720c1136egmextern "C" {
a93a1f58a8763fa69172980b98e3d24720c1136egm#endif
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#include <sdp.h>
a93a1f58a8763fa69172980b98e3d24720c1136egm#include <sys/types.h>
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_MEMORY_ERROR 0x10000000
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_VERSION_ORDER " "
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_ORIGIN_ORDER "v"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_NAME_ORDER "o"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_INFO_ORDER "s"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_URI_ORDER "is"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_EMAIL_ORDER "euis"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_PHONE_ORDER "peuis"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_CONN_ORDER "peuis"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_BW_ORDER "bcpeuis"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_TIME_ORDER "tbcpeuis"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_REPEAT_ORDER "rt"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_ZONE_ORDER "rt"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_KEY_ORDER "zrt"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_ATTR_ORDER "akzrt"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_MEDIA_ORDER "makzrt"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_M_INFO_ORDER "m"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_M_CONN_ORDER "cim"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_M_BW_ORDER "bcim"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_M_KEY_ORDER "bcim"
a93a1f58a8763fa69172980b98e3d24720c1136egm#define SDP_M_ATTR_ORDER "akbcim"
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egmtypedef struct sdp_description {
a93a1f58a8763fa69172980b98e3d24720c1136egm /*
a93a1f58a8763fa69172980b98e3d24720c1136egm * Following boolean fields are used to
a93a1f58a8763fa69172980b98e3d24720c1136egm * check for presence of mandatory fields
a93a1f58a8763fa69172980b98e3d24720c1136egm * in session structure
a93a1f58a8763fa69172980b98e3d24720c1136egm */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_version; /* Version field */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_origin; /* Origin field */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_name; /* Name field */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_conn; /* Connection field */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_mconn; /* Media connection field */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_mparsed; /* Media parsed */
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t d_tparsed; /* Time parsed */
a93a1f58a8763fa69172980b98e3d24720c1136egm /*
a93a1f58a8763fa69172980b98e3d24720c1136egm * keeps count of connection fields within
a93a1f58a8763fa69172980b98e3d24720c1136egm * media section
a93a1f58a8763fa69172980b98e3d24720c1136egm */
a93a1f58a8763fa69172980b98e3d24720c1136egm int d_mccount;
a93a1f58a8763fa69172980b98e3d24720c1136egm sdp_media_t *d_lmedia; /* Last media field */
a93a1f58a8763fa69172980b98e3d24720c1136egm sdp_time_t *d_ltime; /* Last time field */
a93a1f58a8763fa69172980b98e3d24720c1136egm uint_t d_perror; /* Parse error */
a93a1f58a8763fa69172980b98e3d24720c1136egm char d_prev; /* previous field */
a93a1f58a8763fa69172980b98e3d24720c1136egm char d_mprev; /* previous field in media section */
a93a1f58a8763fa69172980b98e3d24720c1136egm} sdp_description_t;
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egmextern int add_value_to_list(sdp_list_t **, const char *, int,
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern int sdp_list_to_str(sdp_list_t *, char **, boolean_t);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern int sdp_str_to_list(sdp_list_t **, const char *, int,
a93a1f58a8763fa69172980b98e3d24720c1136egm boolean_t);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_repeat(sdp_repeat_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_origin(sdp_origin_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_list(sdp_list_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_connection(sdp_conn_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_bandwidth(sdp_bandwidth_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_time(sdp_time_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_zone(sdp_zone_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_attribute(sdp_attr_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_key(sdp_key_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egmextern void sdp_free_media(sdp_media_t *);
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#ifdef __cplusplus
a93a1f58a8763fa69172980b98e3d24720c1136egm}
a93a1f58a8763fa69172980b98e3d24720c1136egm#endif
a93a1f58a8763fa69172980b98e3d24720c1136egm
a93a1f58a8763fa69172980b98e3d24720c1136egm#endif /* _SDP_PARSE_H */