diff options
Diffstat (limited to 'lib/libsdp/session.c')
-rw-r--r-- | lib/libsdp/session.c | 22 |
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); +} |