ipv6_sockglue.c (e6848976b721eeb5551cd94673faafeef78d9f35) ipv6_sockglue.c (20380731bc2897f2952ae055420972ded4cd786e)
1/*
2 * IPv6 BSD socket options interface
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Based on linux/net/ipv4/ip_sockglue.c

--- 95 unchanged lines hidden (view full) ---

104 new_ra->destructor = destructor;
105 new_ra->next = ra;
106 *rap = new_ra;
107 sock_hold(sk);
108 write_unlock_bh(&ip6_ra_lock);
109 return 0;
110}
111
1/*
2 * IPv6 BSD socket options interface
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Based on linux/net/ipv4/ip_sockglue.c

--- 95 unchanged lines hidden (view full) ---

104 new_ra->destructor = destructor;
105 new_ra->next = ra;
106 *rap = new_ra;
107 sock_hold(sk);
108 write_unlock_bh(&ip6_ra_lock);
109 return 0;
110}
111
112extern int ip6_mc_source(int add, int omode, struct sock *sk,
113 struct group_source_req *pgsr);
114extern int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf);
115extern int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
116 struct group_filter __user *optval, int __user *optlen);
117
118
119int ipv6_setsockopt(struct sock *sk, int level, int optname,
120 char __user *optval, int optlen)
121{
122 struct ipv6_pinfo *np = inet6_sk(sk);
123 int val, valbool;
124 int retv = -ENOPROTOOPT;
125
126 if (level == SOL_IP && sk->sk_type != SOCK_RAW)

--- 314 unchanged lines hidden (view full) ---

441 omode = MCAST_INCLUDE;
442 add = 0;
443 }
444 retv = ip6_mc_source(add, omode, sk, &greqs);
445 break;
446 }
447 case MCAST_MSFILTER:
448 {
112int ipv6_setsockopt(struct sock *sk, int level, int optname,
113 char __user *optval, int optlen)
114{
115 struct ipv6_pinfo *np = inet6_sk(sk);
116 int val, valbool;
117 int retv = -ENOPROTOOPT;
118
119 if (level == SOL_IP && sk->sk_type != SOCK_RAW)

--- 314 unchanged lines hidden (view full) ---

434 omode = MCAST_INCLUDE;
435 add = 0;
436 }
437 retv = ip6_mc_source(add, omode, sk, &greqs);
438 break;
439 }
440 case MCAST_MSFILTER:
441 {
449 extern int sysctl_optmem_max;
450 extern int sysctl_mld_max_msf;
451 struct group_filter *gsf;
452
453 if (optlen < GROUP_FILTER_SIZE(0))
454 goto e_inval;
455 if (optlen > sysctl_optmem_max) {
456 retv = -ENOBUFS;
457 break;

--- 260 unchanged lines hidden ---
442 extern int sysctl_mld_max_msf;
443 struct group_filter *gsf;
444
445 if (optlen < GROUP_FILTER_SIZE(0))
446 goto e_inval;
447 if (optlen > sysctl_optmem_max) {
448 retv = -ENOBUFS;
449 break;

--- 260 unchanged lines hidden ---