---- network/bridge.c.orig 2008/05/06 18:40:54 1.11
-+++ network/bridge.c 2008/05/06 21:46:05 1.12
-@@ -119,6 +119,7 @@
- if (ifindex == 0)
- return -ENODEV;
-
-+ memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, name, IFNAMSIZ);
- ifr.ifr_ifindex = ifindex;
-
---- network/common.c.orig 2008/02/02 03:37:43 1.20
-+++ network/common.c 2008/05/06 21:46:05 1.21
-@@ -164,6 +164,7 @@
- {
- struct bnep_conndel_req req;
-
-+ memset(&req, 0, sizeof(req));
- baswap((bdaddr_t *)&req.dst, dst);
- req.flags = 0;
- if (ioctl(ctl, BNEPCONNDEL, &req)) {
-@@ -192,10 +193,12 @@
- }
-
- for (i=0; i < req.cnum; i++) {
-- struct bnep_conndel_req req;
-- memcpy(req.dst, ci[i].dst, ETH_ALEN);
-- req.flags = 0;
-- ioctl(ctl, BNEPCONNDEL, &req);
-+ struct bnep_conndel_req del;
-+
-+ memset(&del, 0, sizeof(del));
-+ memcpy(del.dst, ci[i].dst, ETH_ALEN);
-+ del.flags = 0;
-+ ioctl(ctl, BNEPCONNDEL, &del);
- }
- return 0;
- }
-@@ -204,6 +207,7 @@
- {
- struct bnep_connadd_req req;
-
-+ memset(&req, 0, sizeof(req));
- strncpy(req.device, dev, 16);
- req.device[15] = '\0';
- req.sock = sk;
-@@ -223,17 +227,31 @@
- {
- }
-
-+static int bnep_exec(const char **argv)
-+{
-+ int pid;
-+ GSpawnFlags flags = G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH;
-+
-+ if (!g_spawn_async(NULL, (char **) argv, NULL, flags, bnep_setup, NULL,
-+ &pid, NULL)) {
-+ error("Unable to execute %s %s", *argv[0], *argv[1]);
-+ return -EINVAL;
-+ }
-+
-+ return pid;
-+}
-+
- int bnep_if_up(const char *devname, uint16_t id)
- {
-- int sd, err, pid;
-+ int sd, err;
- struct ifreq ifr;
- const char *argv[5];
-- struct bnep_data *bnep;
-- GSpawnFlags flags;
-+ struct bnep_data *bnep = NULL;
- GSList *l;
-
- /* Check if a script is running */
-- if ((l = g_slist_find_custom(pids, devname, find_devname))) {
-+ l = g_slist_find_custom(pids, devname, find_devname);
-+ if (l) {
- bnep = l->data;
-
- if (bnep->script && !strcmp(bnep->script, "avahi-autoipd")) {
-@@ -242,13 +260,8 @@
- argv[2] = "--refresh";
- argv[3] = NULL;
-
-- flags = G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH;
-- g_spawn_async(NULL, (char **) argv, NULL, flags,
-- bnep_setup, (gpointer) devname, &pid,
-- NULL);
-+ bnep->pid = bnep_exec(argv);
- }
--
-- return bnep->pid;
- }
-
- sd = socket(AF_INET6, SOCK_DGRAM, 0);
-@@ -265,6 +278,9 @@
- return -err;
- }
-
-+ if (bnep)
-+ return bnep->pid;
-+
- bnep = g_new0(struct bnep_data, 1);
- bnep->devname = g_strdup(devname);
-
-@@ -291,15 +307,8 @@
- } else
- argv[2] = NULL;
-
-- flags = G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH;
-- if (!g_spawn_async(NULL, (char **) argv, NULL, flags, bnep_setup,
-- (gpointer) devname, &pid, NULL)) {
-- error("Unable to execute %s", argv[0]);
-- return -EINVAL;
-- }
--
-- bnep->pid = pid;
-- g_child_watch_add(pid, script_exited, bnep);
-+ bnep->pid = bnep_exec(argv);
-+ g_child_watch_add(bnep->pid, script_exited, bnep);
-
- done:
- pids = g_slist_append(pids, bnep);
-@@ -325,7 +334,7 @@
- if (!bnep->pid)
- goto done;
-
-- if (bnep->script && !strcmp (bnep->script, "avahi-autoipd")) {
-+ if (bnep->script && !strcmp(bnep->script, "avahi-autoipd")) {
- argv[0] = bnep->script;
- argv[1] = devname;
- argv[2] = "--kill";
-@@ -352,12 +361,7 @@
- ifr.ifr_flags &= ~IFF_UP;
-
- /* Bring down the interface */
-- if ((ioctl(sd, SIOCSIFFLAGS, (caddr_t) &ifr)) < 0) {
-- err = errno;
-- error("Could not bring down %d. %s(%d)", devname, strerror(err),
-- err);
-- return -err;
-- }
-+ ioctl(sd, SIOCSIFFLAGS, (caddr_t) &ifr);
-
- pids = g_slist_remove(pids, bnep);
-
---- network/connection.c.orig 2008/02/02 03:37:43 1.46
-+++ network/connection.c 2008/05/06 21:46:05 1.47
-@@ -90,6 +90,7 @@
- DBUS_TYPE_INVALID);
- }
- info("%s disconnected", nc->dev);
-+ bnep_if_down(nc->dev);
- nc->state = DISCONNECTED;
- memset(nc->dev, 0, 16);
- strncpy(nc->dev, prefix, strlen(prefix));
-