int __connman_bridge_create(const char *name) { int sk, err; DBG("name %s", name); sk = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sk < 0) return -EOPNOTSUPP; if (ioctl(sk, SIOCBRADDBR, name) == -1) { err = -errno; if (err != -EEXIST) return -EOPNOTSUPP; } err = set_forward_delay(name, 0); if (err < 0) ioctl(sk, SIOCBRDELBR, name); close(sk); return err; }
static int nap_create_bridge(void) { int sk, err; DBG("%s", BNEP_BRIDGE); if (nap_bridge_mode) return 0; sk = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sk < 0) return -EOPNOTSUPP; if (ioctl(sk, SIOCBRADDBR, BNEP_BRIDGE) < 0) { err = -errno; if (err != -EEXIST) { close(sk); return -EOPNOTSUPP; } } err = set_forward_delay(sk); if (err < 0) ioctl(sk, SIOCBRDELBR, BNEP_BRIDGE); close(sk); nap_bridge_mode = err == 0; return err; }