From 965c347ab154fd36ca98cd1fd29b048068d70dab Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 25 Apr 2004 21:54:11 +0000 Subject: Add the pand utility --- pand/sdp.c | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 pand/sdp.c (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c new file mode 100644 index 00000000..16f092d9 --- /dev/null +++ b/pand/sdp.c @@ -0,0 +1,201 @@ +/* + pand - Bluetooth PAN daemon for BlueZ + Copyright (C) 2002 Maxim Krasnyansky + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* + * $Id$ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pand.h" + +static sdp_record_t *record; +static sdp_session_t *session; + +void bnep_sdp_unregister(void) +{ + if (record && sdp_record_unregister(session, record)) + syslog(LOG_ERR, "Service record unregistration failed."); + + sdp_close(session); +} + +int bnep_sdp_register(uint16_t role) +{ + sdp_list_t *svclass, *pfseq, *apseq, *root, *aproto; + uuid_t root_uuid, pan, l2cap, bnep; + sdp_profile_desc_t profile[1]; + sdp_list_t *proto[2]; + uint16_t psm = 15, version = 0x0100; + int status; + + session = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, 0); + if (!session) { + syslog(LOG_ERR, "Failed to connect to the local SDP server. %s(%d)", + strerror(errno), errno); + return -1; + } + + record = sdp_record_alloc(); + if (!record) { + syslog(LOG_ERR, "Failed to allocate service record %s(%d)", + strerror(errno), errno); + sdp_close(session); + return -1; + } + + sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); + root = sdp_list_append(NULL, &root_uuid); + sdp_set_browse_groups(record, root); + + sdp_uuid16_create(&l2cap, L2CAP_UUID); + proto[0] = sdp_list_append(NULL, &l2cap); + proto[0] = sdp_list_append(proto[0], sdp_data_alloc(SDP_UINT16, &psm)); + apseq = sdp_list_append(NULL, proto[0]); + + sdp_uuid16_create(&bnep, BNEP_UUID); + proto[1] = sdp_list_append(NULL, &bnep); + proto[1] = sdp_list_append(proto[1], sdp_data_alloc(SDP_UINT16, &version)); + + /* Supported protocols */ + { + uint16_t ptype[4] = { + 0x0800, /* IPv4 */ + 0x0806, /* ARP */ + }; + sdp_data_t *head, *pseq; + int p; + + for (p = 0, head = NULL; p < 2; p++) { + sdp_data_t *data = sdp_data_alloc(SDP_UINT16, &ptype[p]); + if (head) + sdp_seq_append(head, data); + else + head = data; + } + pseq = sdp_data_alloc(SDP_SEQ16, head); + proto[1] = sdp_list_append(proto[1], pseq); + } + + apseq = sdp_list_append(apseq, proto[1]); + + aproto = sdp_list_append(NULL, apseq); + sdp_set_access_protos(record, aproto); + + switch (role) { + case BNEP_SVC_NAP: + sdp_uuid16_create(&pan, NAP_SVCLASS_ID); + svclass = sdp_list_append(NULL, &pan); + sdp_set_service_classes(record, svclass); + + sdp_uuid16_create(&profile[0].uuid, NAP_PROFILE_ID); + profile[0].version = 0x0100; + pfseq = sdp_list_append(NULL, &profile[0]); + sdp_set_profile_descs(record, pfseq); + + sdp_set_info_attr(record, "Network Access Point", NULL, NULL); + break; + + case BNEP_SVC_GN: + sdp_uuid16_create(&pan, GN_SVCLASS_ID); + svclass = sdp_list_append(NULL, &pan); + sdp_set_service_classes(record, svclass); + + sdp_uuid16_create(&profile[0].uuid, GN_PROFILE_ID); + profile[0].version = 0x0100; + pfseq = sdp_list_append(NULL, &profile[0]); + sdp_set_profile_descs(record, pfseq); + + sdp_set_info_attr(record, "Group Network Service", NULL, NULL); + break; + + case BNEP_SVC_PANU: + sdp_uuid16_create(&pan, PANU_SVCLASS_ID); + svclass = sdp_list_append(NULL, &pan); + sdp_set_service_classes(record, svclass); + + sdp_uuid16_create(&profile[0].uuid, PANU_PROFILE_ID); + profile[0].version = 0x0100; + pfseq = sdp_list_append(NULL, &profile[0]); + sdp_set_profile_descs(record, pfseq); + + sdp_set_info_attr(record, "PAN User", NULL, NULL); + break; + } + + status = sdp_record_register(session, record, 0); + if (status) { + syslog(LOG_ERR, "SDP registration failed."); + sdp_record_free(record); record = NULL; + sdp_close(session); + return -1; + } + return 0; +} + +// Search for PAN service. +// Returns 1 if service is found and 0 otherwise. +int bnep_sdp_search(bdaddr_t *src, bdaddr_t *dst, uint16_t service) +{ + sdp_list_t *srch, *rsp = NULL; + sdp_session_t *s; + uuid_t svclass; + int err; + + switch (service) { + case BNEP_SVC_PANU: + sdp_uuid16_create(&svclass, PANU_SVCLASS_ID); + break; + case BNEP_SVC_NAP: + sdp_uuid16_create(&svclass, NAP_SVCLASS_ID); + break; + case BNEP_SVC_GN: + sdp_uuid16_create(&svclass, GN_SVCLASS_ID); + break; + } + + srch = sdp_list_append(NULL, &svclass); + + s = sdp_connect(src, dst, 0); + if (!s) { + syslog(LOG_ERR, "Failed to connect to the SDP server. %s(%d)", + strerror(errno), errno); + return 0; + } + + err = sdp_service_search_req(s, srch, 1, &rsp); + sdp_close(s); + + /* Assume that search is successeful + * if at least one record is found */ + if (!err && sdp_list_len(rsp)) + return 1; + + return 0; +} -- cgit From 1c78dbe58cb701c7a0463b3bafadadb3d08461f1 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 28 Apr 2004 12:30:24 +0000 Subject: Unify copyright and license information --- pand/sdp.c | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 16f092d9..dfa4c0c7 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -1,25 +1,36 @@ /* - pand - Bluetooth PAN daemon for BlueZ - Copyright (C) 2002 Maxim Krasnyansky - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - * $Id$ + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2002-2003 Maxim Krasnyansky + * Copyright (C) 2002-2004 Marcel Holtmann + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY + * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + * SOFTWARE IS DISCLAIMED. + * + * + * $Id$ */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include @@ -159,8 +170,8 @@ int bnep_sdp_register(uint16_t role) return 0; } -// Search for PAN service. -// Returns 1 if service is found and 0 otherwise. +/* Search for PAN service. + * Returns 1 if service is found and 0 otherwise. */ int bnep_sdp_search(bdaddr_t *src, bdaddr_t *dst, uint16_t service) { sdp_list_t *srch, *rsp = NULL; -- cgit From 49c565df53bf26483c097b511547c203c81f4d41 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Fri, 27 Aug 2004 14:37:54 +0000 Subject: fix memory leaks --- pand/sdp.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index dfa4c0c7..686b25b5 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -63,6 +63,7 @@ int bnep_sdp_register(uint16_t role) uuid_t root_uuid, pan, l2cap, bnep; sdp_profile_desc_t profile[1]; sdp_list_t *proto[2]; + sdp_data_t *v, *p; uint16_t psm = 15, version = 0x0100; int status; @@ -84,15 +85,18 @@ int bnep_sdp_register(uint16_t role) sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); root = sdp_list_append(NULL, &root_uuid); sdp_set_browse_groups(record, root); + sdp_list_free(root, 0); sdp_uuid16_create(&l2cap, L2CAP_UUID); proto[0] = sdp_list_append(NULL, &l2cap); - proto[0] = sdp_list_append(proto[0], sdp_data_alloc(SDP_UINT16, &psm)); + p = sdp_data_alloc(SDP_UINT16, &psm); + proto[0] = sdp_list_append(proto[0], p); apseq = sdp_list_append(NULL, proto[0]); sdp_uuid16_create(&bnep, BNEP_UUID); proto[1] = sdp_list_append(NULL, &bnep); - proto[1] = sdp_list_append(proto[1], sdp_data_alloc(SDP_UINT16, &version)); + v = sdp_data_alloc(SDP_UINT16, &version); + proto[1] = sdp_list_append(proto[1], v); /* Supported protocols */ { @@ -118,6 +122,12 @@ int bnep_sdp_register(uint16_t role) aproto = sdp_list_append(NULL, apseq); sdp_set_access_protos(record, aproto); + sdp_list_free(proto[0], NULL); + sdp_list_free(proto[1], NULL); + sdp_list_free(apseq, NULL); + sdp_list_free(aproto, NULL); + sdp_data_free(p); + sdp_data_free(v); switch (role) { case BNEP_SVC_NAP: @@ -150,11 +160,13 @@ int bnep_sdp_register(uint16_t role) sdp_uuid16_create(&pan, PANU_SVCLASS_ID); svclass = sdp_list_append(NULL, &pan); sdp_set_service_classes(record, svclass); + sdp_list_free(svclass, 0); sdp_uuid16_create(&profile[0].uuid, PANU_PROFILE_ID); profile[0].version = 0x0100; pfseq = sdp_list_append(NULL, &profile[0]); sdp_set_profile_descs(record, pfseq); + sdp_list_free(pfseq, 0); sdp_set_info_attr(record, "PAN User", NULL, NULL); break; -- cgit From fa8b3a2161c997be308438040641dc0445f9d494 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 22 Feb 2005 15:21:59 +0000 Subject: Always include the stdio.h header file --- pand/sdp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 686b25b5..85edc681 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -31,11 +31,12 @@ #include #endif +#include +#include #include #include #include #include -#include #include #include -- cgit From 76823d4777869743af04038d82705cd7249657b8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 7 Aug 2005 06:22:38 +0000 Subject: Use device specific service record register function --- pand/sdp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 85edc681..802887b1 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -58,7 +58,7 @@ void bnep_sdp_unregister(void) sdp_close(session); } -int bnep_sdp_register(uint16_t role) +int bnep_sdp_register(bdaddr_t *device, uint16_t role) { sdp_list_t *svclass, *pfseq, *apseq, *root, *aproto; uuid_t root_uuid, pan, l2cap, bnep; @@ -173,7 +173,7 @@ int bnep_sdp_register(uint16_t role) break; } - status = sdp_record_register(session, record, 0); + status = sdp_device_record_register(session, device, record, 0); if (status) { syslog(LOG_ERR, "SDP registration failed."); sdp_record_free(record); record = NULL; -- cgit From 632a9432774ff3a0c6e556e8f32a565b38890767 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 29 Oct 2005 22:36:31 +0000 Subject: Big cleanup of CVS relics --- pand/sdp.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 802887b1..0edaf8f3 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -3,28 +3,23 @@ * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2004 Marcel Holtmann + * Copyright (C) 2002-2005 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS - * SOFTWARE IS DISCLAIMED. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - * - * $Id$ */ #ifdef HAVE_CONFIG_H @@ -33,9 +28,9 @@ #include #include +#include #include #include -#include #include #include #include -- cgit From f2e48c44a7e4c9ee31b8ce2e302186f6047cfeab Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 3 Jan 2006 13:28:56 +0000 Subject: Update copyright information --- pand/sdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 0edaf8f3..1b1343ae 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -3,7 +3,7 @@ * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2005 Marcel Holtmann + * Copyright (C) 2002-2006 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From 607695ed109340f4b7a5628420e0a8e8aee34f4e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 13 Jan 2007 17:48:12 +0000 Subject: Update copyright information --- pand/sdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 1b1343ae..69a62850 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -3,7 +3,7 @@ * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2006 Marcel Holtmann + * Copyright (C) 2002-2007 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From 3167a660ef4cde064c6ade806229880424001843 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 25 Feb 2007 23:58:02 +0000 Subject: Add missing service record attributes --- pand/sdp.c | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 69a62850..7b26d5c4 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -53,6 +53,20 @@ void bnep_sdp_unregister(void) sdp_close(session); } +static void add_lang_attr(sdp_record_t *r) +{ + sdp_lang_attr_t base_lang; + sdp_list_t *langs = 0; + + /* UTF-8 MIBenum (http://www.iana.org/assignments/character-sets) */ + base_lang.code_ISO639 = (0x65 << 8) | 0x6e; + base_lang.encoding = 106; + base_lang.base_offset = SDP_PRIMARY_LANG_BASE; + langs = sdp_list_append(0, &base_lang); + sdp_set_lang_attr(r, langs); + sdp_list_free(langs, 0); +} + int bnep_sdp_register(bdaddr_t *device, uint16_t role) { sdp_list_t *svclass, *pfseq, *apseq, *root, *aproto; @@ -61,19 +75,24 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) sdp_list_t *proto[2]; sdp_data_t *v, *p; uint16_t psm = 15, version = 0x0100; + uint16_t security_desc = 0; + uint16_t net_access_type = 0xfffe; + uint32_t max_net_access_rate = 0; + char *name = "BlueZ PAN"; + char *desc = "BlueZ PAN Service"; int status; session = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, 0); if (!session) { - syslog(LOG_ERR, "Failed to connect to the local SDP server. %s(%d)", - strerror(errno), errno); + syslog(LOG_ERR, "Failed to connect to the local SDP server. %s(%d)", + strerror(errno), errno); return -1; } record = sdp_record_alloc(); if (!record) { - syslog(LOG_ERR, "Failed to allocate service record %s(%d)", - strerror(errno), errno); + syslog(LOG_ERR, "Failed to allocate service record %s(%d)", + strerror(errno), errno); sdp_close(session); return -1; } @@ -114,16 +133,20 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) proto[1] = sdp_list_append(proto[1], pseq); } - apseq = sdp_list_append(apseq, proto[1]); - - aproto = sdp_list_append(NULL, apseq); + apseq = sdp_list_append(apseq, proto[1]); + + aproto = sdp_list_append(NULL, apseq); sdp_set_access_protos(record, aproto); + + add_lang_attr(record); + sdp_list_free(proto[0], NULL); sdp_list_free(proto[1], NULL); sdp_list_free(apseq, NULL); sdp_list_free(aproto, NULL); sdp_data_free(p); sdp_data_free(v); + sdp_attr_add_new(record, SDP_ATTR_SECURITY_DESC, SDP_UINT16, &security_desc); switch (role) { case BNEP_SVC_NAP: @@ -136,7 +159,10 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) pfseq = sdp_list_append(NULL, &profile[0]); sdp_set_profile_descs(record, pfseq); - sdp_set_info_attr(record, "Network Access Point", NULL, NULL); + sdp_set_info_attr(record, "Network Access Point", name, desc); + + sdp_attr_add_new(record, SDP_ATTR_NET_ACCESS_TYPE, SDP_UINT16, &net_access_type); + sdp_attr_add_new(record, SDP_ATTR_MAX_NET_ACCESSRATE, SDP_UINT32, &max_net_access_rate); break; case BNEP_SVC_GN: @@ -149,7 +175,7 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) pfseq = sdp_list_append(NULL, &profile[0]); sdp_set_profile_descs(record, pfseq); - sdp_set_info_attr(record, "Group Network Service", NULL, NULL); + sdp_set_info_attr(record, "Group Network Service", name, desc); break; case BNEP_SVC_PANU: @@ -164,7 +190,7 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) sdp_set_profile_descs(record, pfseq); sdp_list_free(pfseq, 0); - sdp_set_info_attr(record, "PAN User", NULL, NULL); + sdp_set_info_attr(record, "PAN User", name, desc); break; } @@ -175,6 +201,7 @@ int bnep_sdp_register(bdaddr_t *device, uint16_t role) sdp_close(session); return -1; } + return 0; } @@ -198,13 +225,13 @@ int bnep_sdp_search(bdaddr_t *src, bdaddr_t *dst, uint16_t service) sdp_uuid16_create(&svclass, GN_SVCLASS_ID); break; } - + srch = sdp_list_append(NULL, &svclass); s = sdp_connect(src, dst, 0); if (!s) { syslog(LOG_ERR, "Failed to connect to the SDP server. %s(%d)", - strerror(errno), errno); + strerror(errno), errno); return 0; } -- cgit From e823c15e43a6f924779e466d434c51157002d9ee Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 2 Feb 2008 03:37:05 +0000 Subject: Update copyright information --- pand/sdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pand/sdp.c') diff --git a/pand/sdp.c b/pand/sdp.c index 7b26d5c4..05e2e182 100644 --- a/pand/sdp.c +++ b/pand/sdp.c @@ -3,7 +3,7 @@ * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2007 Marcel Holtmann + * Copyright (C) 2002-2008 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit