summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2005-12-14 10:11:26 +0000
committerMarcel Holtmann <marcel@holtmann.org>2005-12-14 10:11:26 +0000
commitaa8d087a052ab9c54dde1b0ddaf3a47494ef899a (patch)
treeb3dd4b238c1ea2b134c036ac369ccae3b9abf182
parente23d63311f8cbbb2fb978f7a70598d785de2d83f (diff)
Add support for additional access protocols
-rw-r--r--include/sdp_lib.h7
-rw-r--r--src/sdp.c22
2 files changed, 26 insertions, 3 deletions
diff --git a/include/sdp_lib.h b/include/sdp_lib.h
index a45f36ef..7f22451e 100644
--- a/include/sdp_lib.h
+++ b/include/sdp_lib.h
@@ -176,6 +176,11 @@ static inline int sdp_set_browse_groups(sdp_record_t *rec, sdp_list_t *seq)
int sdp_set_access_protos(sdp_record_t *rec, const sdp_list_t *proto);
/*
+ * Set the additional access protocols of the record to those specified in proto
+ */
+int sdp_set_add_access_protos(sdp_record_t *rec, const sdp_list_t *proto);
+
+/*
* Get protocol port (i.e. PSM for L2CAP, Channel for RFCOMM)
*/
int sdp_get_proto_port(const sdp_list_t *list, int proto);
@@ -457,7 +462,7 @@ int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **protos);
/*
* Get the additional access protocols from the service record
*/
-int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap);
+int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **protos);
/*
* Extract the list of browse groups to which the service belongs.
diff --git a/src/sdp.c b/src/sdp.c
index 90bc447e..28c08679 100644
--- a/src/sdp.c
+++ b/src/sdp.c
@@ -1812,13 +1812,31 @@ static sdp_data_t *access_proto_to_dataseq(sdp_record_t *rec, sdp_list_t *proto)
int sdp_set_access_protos(sdp_record_t *rec, const sdp_list_t *ap)
{
const sdp_list_t *p;
- sdp_data_t *protos = 0;
+ sdp_data_t *protos = NULL;
for (p = ap; p; p = p->next) {
- sdp_data_t *seq = access_proto_to_dataseq(rec, (sdp_list_t *)p->data);
+ sdp_data_t *seq = access_proto_to_dataseq(rec, (sdp_list_t *) p->data);
protos = sdp_seq_append(protos, seq);
}
+
sdp_attr_add(rec, SDP_ATTR_PROTO_DESC_LIST, protos);
+
+ return 0;
+}
+
+int sdp_set_add_access_protos(sdp_record_t *rec, const sdp_list_t *ap)
+{
+ const sdp_list_t *p;
+ sdp_data_t *protos = NULL;
+
+ for (p = ap; p; p = p->next) {
+ sdp_data_t *seq = access_proto_to_dataseq(rec, (sdp_list_t *) p->data);
+ protos = sdp_seq_append(protos, seq);
+ }
+
+ sdp_attr_add(rec, SDP_ATTR_ADD_PROTO_DESC_LIST,
+ protos ? sdp_data_alloc(SDP_SEQ8, protos) : NULL);
+
return 0;
}