diff options
Diffstat (limited to 'network/common.c')
-rw-r--r-- | network/common.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/network/common.c b/network/common.c index dce12415..991073ec 100644 --- a/network/common.c +++ b/network/common.c @@ -63,6 +63,10 @@ static struct { { NULL } }; +static const char *panu = NULL; +static const char *gn = NULL; +static const char *nap = NULL; + struct bnep_data { char *devname; int pid; @@ -129,7 +133,8 @@ const char *bnep_name(uint16_t id) return NULL; } -int bnep_init(void) +int bnep_init(const char *panu_script, const char *gn_script, + const char *nap_script) { ctl = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_BNEP); @@ -140,6 +145,9 @@ int bnep_init(void) return -err; } + panu = panu_script; + gn = gn_script; + nap = nap_script; return 0; } @@ -212,11 +220,11 @@ static void bnep_setup(gpointer data) { } -int bnep_if_up(const char *devname, const char *script) +int bnep_if_up(const char *devname, uint16_t id) { int sd, err, pid; struct ifreq ifr; - const char *argv[3]; + const char *argv[3], *script; struct bnep_data *bnep; sd = socket(AF_INET6, SOCK_DGRAM, 0); @@ -232,6 +240,16 @@ int bnep_if_up(const char *devname, const char *script) return -err; } + if (!id) + return 0; + + if (id == BNEP_SVC_PANU) + script = panu; + else if (id == BNEP_SVC_GN) + script = gn; + else + script = nap; + if (!script) return 0; |