mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
commit
f5c0c6f429
333 changed files with 4400 additions and 2798 deletions
|
@ -1336,6 +1336,12 @@ static int dn_setsockopt(struct socket *sock, int level, int optname, char __use
|
|||
lock_sock(sk);
|
||||
err = __dn_setsockopt(sock, level, optname, optval, optlen, 0);
|
||||
release_sock(sk);
|
||||
#ifdef CONFIG_NETFILTER
|
||||
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
||||
if (err == -ENOPROTOOPT && optname != DSO_LINKINFO &&
|
||||
optname != DSO_STREAM && optname != DSO_SEQPACKET)
|
||||
err = nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
|
||||
#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
|
@ -1443,15 +1449,6 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
|
|||
dn_nsp_send_disc(sk, 0x38, 0, sk->sk_allocation);
|
||||
break;
|
||||
|
||||
default:
|
||||
#ifdef CONFIG_NETFILTER
|
||||
return nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
|
||||
#endif
|
||||
case DSO_LINKINFO:
|
||||
case DSO_STREAM:
|
||||
case DSO_SEQPACKET:
|
||||
return -ENOPROTOOPT;
|
||||
|
||||
case DSO_MAXWINDOW:
|
||||
if (optlen != sizeof(unsigned long))
|
||||
return -EINVAL;
|
||||
|
@ -1499,6 +1496,12 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
|
|||
return -EINVAL;
|
||||
scp->info_loc = u.info;
|
||||
break;
|
||||
|
||||
case DSO_LINKINFO:
|
||||
case DSO_STREAM:
|
||||
case DSO_SEQPACKET:
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1512,6 +1515,20 @@ static int dn_getsockopt(struct socket *sock, int level, int optname, char __use
|
|||
lock_sock(sk);
|
||||
err = __dn_getsockopt(sock, level, optname, optval, optlen, 0);
|
||||
release_sock(sk);
|
||||
#ifdef CONFIG_NETFILTER
|
||||
if (err == -ENOPROTOOPT && optname != DSO_STREAM &&
|
||||
optname != DSO_SEQPACKET && optname != DSO_CONACCEPT &&
|
||||
optname != DSO_CONREJECT) {
|
||||
int len;
|
||||
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
err = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
|
||||
if (err >= 0)
|
||||
err = put_user(len, optlen);
|
||||
}
|
||||
#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
|
@ -1577,26 +1594,6 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
|
|||
r_data = &link;
|
||||
break;
|
||||
|
||||
default:
|
||||
#ifdef CONFIG_NETFILTER
|
||||
{
|
||||
int ret, len;
|
||||
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
ret = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
|
||||
if (ret >= 0)
|
||||
ret = put_user(len, optlen);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
case DSO_STREAM:
|
||||
case DSO_SEQPACKET:
|
||||
case DSO_CONACCEPT:
|
||||
case DSO_CONREJECT:
|
||||
return -ENOPROTOOPT;
|
||||
|
||||
case DSO_MAXWINDOW:
|
||||
if (r_len > sizeof(unsigned long))
|
||||
r_len = sizeof(unsigned long);
|
||||
|
@ -1628,6 +1625,13 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
|
|||
r_len = sizeof(unsigned char);
|
||||
r_data = &scp->info_rem;
|
||||
break;
|
||||
|
||||
case DSO_STREAM:
|
||||
case DSO_SEQPACKET:
|
||||
case DSO_CONACCEPT:
|
||||
case DSO_CONREJECT:
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
|
||||
if (r_data) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue