appletalk: factor out a atrtr_ioctl_addrt helper
Add a helper than can be shared with the upcoming compat ioctl handler. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3986912f6a
commit
a500492354
|
@ -867,6 +867,24 @@ static int atif_ioctl(int cmd, void __user *arg)
|
||||||
return copy_to_user(arg, &atreq, sizeof(atreq)) ? -EFAULT : 0;
|
return copy_to_user(arg, &atreq, sizeof(atreq)) ? -EFAULT : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int atrtr_ioctl_addrt(struct rtentry *rt)
|
||||||
|
{
|
||||||
|
struct net_device *dev = NULL;
|
||||||
|
|
||||||
|
if (rt->rt_dev) {
|
||||||
|
char name[IFNAMSIZ];
|
||||||
|
|
||||||
|
if (copy_from_user(name, rt->rt_dev, IFNAMSIZ-1))
|
||||||
|
return -EFAULT;
|
||||||
|
name[IFNAMSIZ-1] = '\0';
|
||||||
|
|
||||||
|
dev = __dev_get_by_name(&init_net, name);
|
||||||
|
if (!dev)
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
return atrtr_create(rt, dev);
|
||||||
|
}
|
||||||
|
|
||||||
/* Routing ioctl() calls */
|
/* Routing ioctl() calls */
|
||||||
static int atrtr_ioctl(unsigned int cmd, void __user *arg)
|
static int atrtr_ioctl(unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
|
@ -882,19 +900,8 @@ static int atrtr_ioctl(unsigned int cmd, void __user *arg)
|
||||||
return atrtr_delete(&((struct sockaddr_at *)
|
return atrtr_delete(&((struct sockaddr_at *)
|
||||||
&rt.rt_dst)->sat_addr);
|
&rt.rt_dst)->sat_addr);
|
||||||
|
|
||||||
case SIOCADDRT: {
|
case SIOCADDRT:
|
||||||
struct net_device *dev = NULL;
|
return atrtr_ioctl_addrt(&rt);
|
||||||
if (rt.rt_dev) {
|
|
||||||
char name[IFNAMSIZ];
|
|
||||||
if (copy_from_user(name, rt.rt_dev, IFNAMSIZ-1))
|
|
||||||
return -EFAULT;
|
|
||||||
name[IFNAMSIZ-1] = '\0';
|
|
||||||
dev = __dev_get_by_name(&init_net, name);
|
|
||||||
if (!dev)
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
return atrtr_create(&rt, dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue