All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] transport: add getsockname to transport driver
@ 2013-05-28 17:45 Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 2/6] bluetooth: add getsockname() entry in the bluetooth driver Gustavo Padovan
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Enable other pieces of obex to get the source Bluetooth address.
---
 obexd/src/transport.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/obexd/src/transport.h b/obexd/src/transport.h
index b81615b..97e10d0 100644
--- a/obexd/src/transport.h
+++ b/obexd/src/transport.h
@@ -26,6 +26,7 @@ struct obex_transport_driver {
 	uint16_t service;
 	void *(*start) (struct obex_server *server, int *err);
 	int (*getpeername) (GIOChannel *io, char **name);
+	int (*getsockname) (GIOChannel *io, char **name);
 	void (*stop) (void *data);
 };
 
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] bluetooth: add getsockname() entry in the bluetooth driver
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
@ 2013-05-28 17:45 ` Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 3/6] obex: add obex_getsockname() Gustavo Padovan
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

---
 obexd/plugins/bluetooth.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
index b9e9c91..07baf90 100644
--- a/obexd/plugins/bluetooth.c
+++ b/obexd/plugins/bluetooth.c
@@ -431,10 +431,29 @@ static int bluetooth_getpeername(GIOChannel *io, char **name)
 	return 0;
 }
 
+static int bluetooth_getsockname(GIOChannel *io, char **name)
+{
+	GError *gerr = NULL;
+	char address[18];
+
+	bt_io_get(io, &gerr, BT_IO_OPT_SOURCE, address, BT_IO_OPT_INVALID);
+
+	if (gerr) {
+		error("%s", gerr->message);
+		g_error_free(gerr);
+		return -EINVAL;
+	}
+
+	*name = g_strdup(address);
+
+	return 0;
+}
+
 static struct obex_transport_driver driver = {
 	.name = "bluetooth",
 	.start = bluetooth_start,
 	.getpeername = bluetooth_getpeername,
+	.getsockname = bluetooth_getsockname,
 	.stop = bluetooth_stop
 };
 
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] obex: add obex_getsockname()
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 2/6] bluetooth: add getsockname() entry in the bluetooth driver Gustavo Padovan
@ 2013-05-28 17:45 ` Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 4/6] obex: get src and dst address and store it Gustavo Padovan
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Allow obex users to get the source device address.
---
 obexd/src/obex.c | 10 ++++++++++
 obexd/src/obex.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index a3e7b0e..7a1d612 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
@@ -1226,6 +1226,16 @@ int obex_getpeername(struct obex_session *os, char **name)
 	return transport->getpeername(os->io, name);
 }
 
+int obex_getsockname(struct obex_session *os, char **name)
+{
+	struct obex_transport_driver *transport = os->server->transport;
+
+	if (transport == NULL || transport->getsockname == NULL)
+		return -ENOTSUP;
+
+	return transport->getsockname(os->io, name);
+}
+
 int memncmp0(const void *a, size_t na, const void *b, size_t nb)
 {
 	if (na != nb)
diff --git a/obexd/src/obex.h b/obexd/src/obex.h
index 443a748..fc16747 100644
--- a/obexd/src/obex.h
+++ b/obexd/src/obex.h
@@ -46,6 +46,7 @@ ssize_t obex_get_apparam(struct obex_session *os, const uint8_t **buffer);
 ssize_t obex_get_non_header_data(struct obex_session *os,
 							const uint8_t **data);
 int obex_getpeername(struct obex_session *os, char **name);
+int obex_getsockname(struct obex_session *os, char **name);
 
 /* Just a thin wrapper around memcmp to deal with NULL values */
 int memncmp0(const void *a, size_t na, const void *b, size_t nb);
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] obex: get src and dst address and store it
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 2/6] bluetooth: add getsockname() entry in the bluetooth driver Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 3/6] obex: add obex_getsockname() Gustavo Padovan
@ 2013-05-28 17:45 ` Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 5/6] session: add Source and Destination properties Gustavo Padovan
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

This commit creates src and dst members in obex_session to later use them
to export via Session D-Bus API.
---
 obexd/src/obex-priv.h | 2 ++
 obexd/src/obex.c      | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/obexd/src/obex-priv.h b/obexd/src/obex-priv.h
index 41854bc..355a7f8 100644
--- a/obexd/src/obex-priv.h
+++ b/obexd/src/obex-priv.h
@@ -27,6 +27,8 @@ struct obex_session {
 	uint32_t id;
 	uint8_t cmd;
 	uint8_t action_id;
+	char *src;
+	char *dst;
 	char *name;
 	char *destname;
 	char *type;
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 7a1d612..8a7a8a3 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
@@ -252,6 +252,9 @@ static void obex_session_free(struct obex_session *os)
 	if (os->obex)
 		g_obex_unref(os->obex);
 
+	g_free(os->src);
+	g_free(os->dst);
+
 	g_free(os);
 }
 
@@ -1134,6 +1137,9 @@ int obex_session_start(GIOChannel *io, uint16_t tx_mtu, uint16_t rx_mtu,
 	os->obex = obex;
 	os->io = g_io_channel_ref(io);
 
+	obex_getsockname(os, &os->src);
+	obex_getpeername(os, &os->dst);
+
 	sessions = g_slist_prepend(sessions, os);
 
 	return 0;
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] session: add Source and Destination properties
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
                   ` (2 preceding siblings ...)
  2013-05-28 17:45 ` [PATCH 4/6] obex: get src and dst address and store it Gustavo Padovan
@ 2013-05-28 17:45 ` Gustavo Padovan
  2013-05-28 17:45 ` [PATCH 6/6] manager: remove unused call to obex_getpeername() Gustavo Padovan
  2013-05-29 11:41 ` [PATCH 1/6] transport: add getsockname to transport driver Luiz Augusto von Dentz
  5 siblings, 0 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

This is useful when we want to know where a incoming OPP transfer, for
example, is from.
---
 obexd/src/manager.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/obexd/src/manager.c b/obexd/src/manager.c
index b86565c..a116a3e 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
@@ -265,6 +265,30 @@ static DBusMessage *unregister_agent(DBusConnection *conn,
 	return dbus_message_new_method_return(msg);
 }
 
+static gboolean get_source(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *data)
+{
+	struct obex_session *os = data;
+	char *s;
+
+	s = os->src;
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &s);
+
+	return TRUE;
+}
+
+static gboolean get_destination(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *data)
+{
+	struct obex_session *os = data;
+	char *s;
+
+	s = os->dst;
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &s);
+
+	return TRUE;
+}
+
 static gboolean session_target_exists(const GDBusPropertyTable *property,
 								void *data)
 {
@@ -529,6 +553,8 @@ static const GDBusPropertyTable transfer_properties[] = {
 };
 
 static const GDBusPropertyTable session_properties[] = {
+	{ "Source", "s", get_source },
+	{ "Destination", "s", get_destination },
 	{ "Target", "s", get_target, NULL, session_target_exists },
 	{ "Root", "s", get_root },
 	{ }
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] manager: remove unused call to obex_getpeername()
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
                   ` (3 preceding siblings ...)
  2013-05-28 17:45 ` [PATCH 5/6] session: add Source and Destination properties Gustavo Padovan
@ 2013-05-28 17:45 ` Gustavo Padovan
  2013-05-29 11:41 ` [PATCH 1/6] transport: add getsockname to transport driver Luiz Augusto von Dentz
  5 siblings, 0 replies; 7+ messages in thread
From: Gustavo Padovan @ 2013-05-28 17:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: emilio.pozuelo, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

---
 obexd/src/manager.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/obexd/src/manager.c b/obexd/src/manager.c
index a116a3e..d0991e9 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
@@ -751,10 +751,8 @@ int manager_request_authorization(struct obex_transfer *transfer, int32_t time,
 	DBusPendingCall *call;
 	const char *filename = os->name ? os->name : "";
 	const char *type = os->type ? os->type : "";
-	char *address;
 	unsigned int watch;
 	gboolean got_reply;
-	int err;
 
 	if (!agent)
 		return -1;
@@ -765,10 +763,6 @@ int manager_request_authorization(struct obex_transfer *transfer, int32_t time,
 	if (!new_folder || !new_name)
 		return -EINVAL;
 
-	err = obex_getpeername(os, &address);
-	if (err < 0)
-		return err;
-
 	msg = dbus_message_new_method_call(agent->bus_name, agent->path,
 							AGENT_INTERFACE,
 							"AuthorizePush");
@@ -776,8 +770,6 @@ int manager_request_authorization(struct obex_transfer *transfer, int32_t time,
 	dbus_message_append_args(msg, DBUS_TYPE_OBJECT_PATH, &transfer->path,
 							DBUS_TYPE_INVALID);
 
-	g_free(address);
-
 	if (!dbus_connection_send_with_reply(connection,
 					msg, &call, TIMEOUT)) {
 		dbus_message_unref(msg);
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/6] transport: add getsockname to transport driver
  2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
                   ` (4 preceding siblings ...)
  2013-05-28 17:45 ` [PATCH 6/6] manager: remove unused call to obex_getpeername() Gustavo Padovan
@ 2013-05-29 11:41 ` Luiz Augusto von Dentz
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2013-05-29 11:41 UTC (permalink / raw)
  To: Gustavo Padovan; +Cc: linux-bluetooth, emilio.pozuelo, Gustavo Padovan

Hi Gustavo,

On Tue, May 28, 2013 at 10:45 AM, Gustavo Padovan <gustavo@padovan.org> wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>
> Enable other pieces of obex to get the source Bluetooth address.
> ---
>  obexd/src/transport.h | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/obexd/src/transport.h b/obexd/src/transport.h
> index b81615b..97e10d0 100644
> --- a/obexd/src/transport.h
> +++ b/obexd/src/transport.h
> @@ -26,6 +26,7 @@ struct obex_transport_driver {
>         uint16_t service;
>         void *(*start) (struct obex_server *server, int *err);
>         int (*getpeername) (GIOChannel *io, char **name);
> +       int (*getsockname) (GIOChannel *io, char **name);
>         void (*stop) (void *data);
>  };
>
> --
> 1.8.1.4

Pushed, thanks.


--
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-05-29 11:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-28 17:45 [PATCH 1/6] transport: add getsockname to transport driver Gustavo Padovan
2013-05-28 17:45 ` [PATCH 2/6] bluetooth: add getsockname() entry in the bluetooth driver Gustavo Padovan
2013-05-28 17:45 ` [PATCH 3/6] obex: add obex_getsockname() Gustavo Padovan
2013-05-28 17:45 ` [PATCH 4/6] obex: get src and dst address and store it Gustavo Padovan
2013-05-28 17:45 ` [PATCH 5/6] session: add Source and Destination properties Gustavo Padovan
2013-05-28 17:45 ` [PATCH 6/6] manager: remove unused call to obex_getpeername() Gustavo Padovan
2013-05-29 11:41 ` [PATCH 1/6] transport: add getsockname to transport driver Luiz Augusto von Dentz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.