Beispiel #1
0
int br_ioctl(struct net_bridge *br, unsigned int cmd, unsigned long arg0, unsigned long arg1, unsigned long arg2)
{
	int err;

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;

	down(&ioctl_mutex);
	err = br_ioctl_deviceless(cmd, arg0, arg1);
	if (err == -EOPNOTSUPP)
		err = br_ioctl_device(br, cmd, arg0, arg1, arg2);
	up(&ioctl_mutex);

	return err;
}
Beispiel #2
0
int br_ioctl_deviceless_stub(unsigned long arg)
{
	unsigned long i[3];
	int err;

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;

	if (copy_from_user(i, (void *)arg, 3*sizeof(unsigned long)))
		return -EFAULT;

	rtnl_lock();
	err =  br_ioctl_deviceless(i[0], i[1], i[2]);
	rtnl_unlock();
	return err;
}
Beispiel #3
0
int br_ioctl_deviceless_stub(unsigned long arg)
{
	int err;
	unsigned long i[3];

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;

	if (copy_from_user(i, (void *)arg, 3*sizeof(unsigned long)))
		return -EFAULT;

	down(&ioctl_mutex);
	err = br_ioctl_deviceless(i[0], i[1], i[2]);
	up(&ioctl_mutex);

	return err;
}
Beispiel #4
0
int br_ioctl(struct net_bridge *br, unsigned int cmd, unsigned long arg0, unsigned long arg1, unsigned long arg2)
{
	int err;

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;

	down(&ioctl_mutex);
	err = br_ioctl_deviceless(cmd, arg0, arg1);
	//printk("deviceless - %d %d\n", cmd, err);
	if (err == -EOPNOTSUPP)
		err = br_ioctl_device(br, cmd, arg0, arg1, arg2);
	// 0609 debug
	if(err != 0) {
		printk("br ioctl error %u %lu %lu %lu\n", 
		       cmd, arg0, arg1, arg2);
	}
	up(&ioctl_mutex);

	return err;
}