summaryrefslogtreecommitdiffstats
path: root/network/bridge.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-09-28 13:23:51 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-09-28 13:23:51 +0000
commit6113615ecfb8026a6a3ce0af38fc79ec8abec748 (patch)
tree67c3ca338eaf7928443280456a8ca7567682b661 /network/bridge.c
parenta87f1daabf62c0f45dfb9e1c5f21cec75477d342 (diff)
Rework configuration file to use roles.
Diffstat (limited to 'network/bridge.c')
-rw-r--r--network/bridge.c35
1 files changed, 28 insertions, 7 deletions
diff --git a/network/bridge.c b/network/bridge.c
index 8ef06190..24f1bcc4 100644
--- a/network/bridge.c
+++ b/network/bridge.c
@@ -31,15 +31,20 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
-
#include <net/if.h>
#include <linux/sockios.h>
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/l2cap.h>
+#include <bluetooth/bnep.h>
+
#include "bridge.h"
static int bridge_socket = -1;
+static const char *gn_bridge;
+static const char *nap_bridge;
-int bridge_init(void)
+int bridge_init(const char *gn_iface, const char *nap_iface)
{
#if 0
struct stat st;
@@ -52,6 +57,8 @@ int bridge_init(void)
if (bridge_socket < 0)
return -errno;
+ gn_bridge = gn_iface;
+ nap_bridge = nap_iface;
return 0;
}
@@ -62,9 +69,10 @@ void bridge_cleanup(void)
bridge_socket = -1;
}
-int bridge_create(const char *name)
+int bridge_create(int id)
{
int err;
+ const char *name = bridge_get_name(id);
err = ioctl(bridge_socket, SIOCBRADDBR, name);
if (err < 0)
@@ -73,9 +81,10 @@ int bridge_create(const char *name)
return 0;
}
-int bridge_remove(const char *name)
+int bridge_remove(int id)
{
int err;
+ const char *name = bridge_get_name(id);
err = ioctl(bridge_socket, SIOCBRDELBR, name);
if (err < 0)
@@ -84,15 +93,16 @@ int bridge_remove(const char *name)
return 0;
}
-int bridge_add_interface(const char *bridge, const char *dev)
+int bridge_add_interface(int id, const char *dev)
{
struct ifreq ifr;
int ifindex = if_nametoindex(dev);
+ const char *name = bridge_get_name(id);
- if (ifindex == 0)
+ if (ifindex == 0)
return -ENODEV;
- strncpy(ifr.ifr_name, bridge, IFNAMSIZ);
+ strncpy(ifr.ifr_name, name, IFNAMSIZ);
ifr.ifr_ifindex = ifindex;
if (ioctl(bridge_socket, SIOCBRADDIF, &ifr) < 0)
@@ -100,3 +110,14 @@ int bridge_add_interface(const char *bridge, const char *dev)
return 0;
}
+
+const char *bridge_get_name(int id)
+{
+ if (id == BNEP_SVC_GN)
+ return gn_bridge;
+
+ if (id == BNEP_SVC_NAP)
+ return nap_bridge;
+
+ return NULL;
+}