Example #1
0
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;
}
Example #2
0
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;
}