Commit 0d502d82 authored by David S. Miller's avatar David S. Miller
parents 09384dfc a9dfac33
...@@ -136,7 +136,7 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, ...@@ -136,7 +136,7 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,
unsigned int cmd) unsigned int cmd)
{ {
struct ifreq ifr; struct ifreq ifr;
int ret = -EINVAL; int ret = -ENOIOCTLCMD;
struct net_device *dev; struct net_device *dev;
if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
...@@ -146,8 +146,10 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, ...@@ -146,8 +146,10 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,
dev_load(sock_net(sk), ifr.ifr_name); dev_load(sock_net(sk), ifr.ifr_name);
dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); dev = dev_get_by_name(sock_net(sk), ifr.ifr_name);
if (dev->type == ARPHRD_IEEE802154 ||
dev->type == ARPHRD_IEEE802154_PHY) if ((dev->type == ARPHRD_IEEE802154 ||
dev->type == ARPHRD_IEEE802154_PHY) &&
dev->netdev_ops->ndo_do_ioctl)
ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd);
if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq)))
......
...@@ -377,6 +377,18 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb) ...@@ -377,6 +377,18 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)
return ret; return ret;
} }
static int dgram_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen)
{
return -EOPNOTSUPP;
}
static int dgram_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user optlen)
{
return -EOPNOTSUPP;
}
struct proto ieee802154_dgram_prot = { struct proto ieee802154_dgram_prot = {
.name = "IEEE-802.15.4-MAC", .name = "IEEE-802.15.4-MAC",
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -391,5 +403,7 @@ struct proto ieee802154_dgram_prot = { ...@@ -391,5 +403,7 @@ struct proto ieee802154_dgram_prot = {
.connect = dgram_connect, .connect = dgram_connect,
.disconnect = dgram_disconnect, .disconnect = dgram_disconnect,
.ioctl = dgram_ioctl, .ioctl = dgram_ioctl,
.getsockopt = dgram_getsockopt,
.setsockopt = dgram_setsockopt,
}; };
...@@ -238,6 +238,18 @@ void ieee802154_raw_deliver(struct net_device *dev, struct sk_buff *skb) ...@@ -238,6 +238,18 @@ void ieee802154_raw_deliver(struct net_device *dev, struct sk_buff *skb)
read_unlock(&raw_lock); read_unlock(&raw_lock);
} }
static int raw_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen)
{
return -EOPNOTSUPP;
}
static int raw_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user optlen)
{
return -EOPNOTSUPP;
}
struct proto ieee802154_raw_prot = { struct proto ieee802154_raw_prot = {
.name = "IEEE-802.15.4-RAW", .name = "IEEE-802.15.4-RAW",
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -250,5 +262,7 @@ struct proto ieee802154_raw_prot = { ...@@ -250,5 +262,7 @@ struct proto ieee802154_raw_prot = {
.unhash = raw_unhash, .unhash = raw_unhash,
.connect = raw_connect, .connect = raw_connect,
.disconnect = raw_disconnect, .disconnect = raw_disconnect,
.getsockopt = raw_getsockopt,
.setsockopt = raw_setsockopt,
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment