aboutsummaryrefslogtreecommitdiff
path: root/lib/libsdp/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsdp/session.c')
-rw-r--r--lib/libsdp/session.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/libsdp/session.c b/lib/libsdp/session.c
index 52559585c22e..43be17c0294e 100644
--- a/lib/libsdp/session.c
+++ b/lib/libsdp/session.c
@@ -180,3 +180,25 @@ sdp_error(void *xss)
return ((ss != NULL)? ss->error : EINVAL);
}
+
+int32_t
+sdp_get_lcaddr(void *xss, bdaddr_t *l)
+{
+ sdp_session_p ss = (sdp_session_p) xss;
+ struct sockaddr_l2cap sa;
+ socklen_t size;
+
+ if (l == NULL || ss == NULL || ss->flags & SDP_SESSION_LOCAL) {
+ ss->error = EINVAL;
+ goto fail;
+ }
+
+ size = sizeof(sa);
+ if (getsockname(ss->s, (struct sockaddr *)&sa, &size) == 0) {
+ bdaddr_copy(l, &sa.l2cap_bdaddr);
+ ss->error = 0;
+ } else
+ ss->error = errno;
+fail:
+ return ((ss->error == 0) ? 0 : -1);
+}