Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
b3c6aeb3
Commit
b3c6aeb3
authored
Dec 02, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
af2eb17b
af1afe86
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
52 additions
and
25 deletions
+52
-25
net/ipv4/af_inet.c
net/ipv4/af_inet.c
+3
-4
net/ipv4/igmp.c
net/ipv4/igmp.c
+4
-1
net/ipv6/af_inet6.c
net/ipv6/af_inet6.c
+33
-14
net/ipv6/mcast.c
net/ipv6/mcast.c
+5
-0
net/sctp/socket.c
net/sctp/socket.c
+5
-5
net/sctp/transport.c
net/sctp/transport.c
+2
-1
No files found.
net/ipv4/af_inet.c
View file @
b3c6aeb3
...
...
@@ -228,13 +228,14 @@ static int inet_create(struct socket *sock, int protocol)
unsigned
char
answer_flags
;
char
answer_no_check
;
int
try_loading_module
=
0
;
int
err
=
-
ESOCKTNOSUPPORT
;
int
err
;
sock
->
state
=
SS_UNCONNECTED
;
/* Look for the requested type/protocol pair. */
answer
=
NULL
;
lookup_protocol:
err
=
-
ESOCKTNOSUPPORT
;
rcu_read_lock
();
list_for_each_rcu
(
p
,
&
inetsw
[
sock
->
type
])
{
answer
=
list_entry
(
p
,
struct
inet_protosw
,
list
);
...
...
@@ -252,6 +253,7 @@ static int inet_create(struct socket *sock, int protocol)
if
(
IPPROTO_IP
==
answer
->
protocol
)
break
;
}
err
=
-
EPROTONOSUPPORT
;
answer
=
NULL
;
}
...
...
@@ -280,9 +282,6 @@ static int inet_create(struct socket *sock, int protocol)
err
=
-
EPERM
;
if
(
answer
->
capability
>
0
&&
!
capable
(
answer
->
capability
))
goto
out_rcu_unlock
;
err
=
-
EPROTONOSUPPORT
;
if
(
!
protocol
)
goto
out_rcu_unlock
;
sock
->
ops
=
answer
->
ops
;
answer_prot
=
answer
->
prot
;
...
...
net/ipv4/igmp.c
View file @
b3c6aeb3
...
...
@@ -897,7 +897,10 @@ int igmp_rcv(struct sk_buff *skb)
/* Is it our report looped back? */
if
(((
struct
rtable
*
)
skb
->
dst
)
->
fl
.
iif
==
0
)
break
;
igmp_heard_report
(
in_dev
,
ih
->
group
);
/* don't rely on MC router hearing unicast reports */
if
(
skb
->
pkt_type
==
PACKET_MULTICAST
||
skb
->
pkt_type
==
PACKET_BROADCAST
)
igmp_heard_report
(
in_dev
,
ih
->
group
);
break
;
case
IGMP_PIM
:
#ifdef CONFIG_IP_PIMSM_V1
...
...
net/ipv6/af_inet6.c
View file @
b3c6aeb3
...
...
@@ -92,10 +92,13 @@ static int inet6_create(struct socket *sock, int protocol)
struct
proto
*
answer_prot
;
unsigned
char
answer_flags
;
char
answer_no_check
;
int
rc
;
int
try_loading_module
=
0
;
int
err
;
/* Look for the requested type/protocol pair. */
answer
=
NULL
;
lookup_protocol:
err
=
-
ESOCKTNOSUPPORT
;
rcu_read_lock
();
list_for_each_rcu
(
p
,
&
inetsw6
[
sock
->
type
])
{
answer
=
list_entry
(
p
,
struct
inet_protosw
,
list
);
...
...
@@ -113,21 +116,37 @@ static int inet6_create(struct socket *sock, int protocol)
if
(
IPPROTO_IP
==
answer
->
protocol
)
break
;
}
err
=
-
EPROTONOSUPPORT
;
answer
=
NULL
;
}
rc
=
-
ESOCKTNOSUPPORT
;
if
(
!
answer
)
goto
out_rcu_unlock
;
rc
=
-
EPERM
;
if
(
!
answer
)
{
if
(
try_loading_module
<
2
)
{
rcu_read_unlock
();
/*
* Be more specific, e.g. net-pf-10-proto-132-type-1
* (net-pf-PF_INET6-proto-IPPROTO_SCTP-type-SOCK_STREAM)
*/
if
(
++
try_loading_module
==
1
)
request_module
(
"net-pf-%d-proto-%d-type-%d"
,
PF_INET6
,
protocol
,
sock
->
type
);
/*
* Fall back to generic, e.g. net-pf-10-proto-132
* (net-pf-PF_INET6-proto-IPPROTO_SCTP)
*/
else
request_module
(
"net-pf-%d-proto-%d"
,
PF_INET6
,
protocol
);
goto
lookup_protocol
;
}
else
goto
out_rcu_unlock
;
}
err
=
-
EPERM
;
if
(
answer
->
capability
>
0
&&
!
capable
(
answer
->
capability
))
goto
out_rcu_unlock
;
rc
=
-
EPROTONOSUPPORT
;
if
(
!
protocol
)
goto
out_rcu_unlock
;
sock
->
ops
=
answer
->
ops
;
answer_prot
=
answer
->
prot
;
answer_no_check
=
answer
->
no_check
;
answer_flags
=
answer
->
flags
;
...
...
@@ -135,14 +154,14 @@ static int inet6_create(struct socket *sock, int protocol)
BUG_TRAP
(
answer_prot
->
slab
!=
NULL
);
rc
=
-
ENOBUFS
;
err
=
-
ENOBUFS
;
sk
=
sk_alloc
(
PF_INET6
,
GFP_KERNEL
,
answer_prot
,
1
);
if
(
sk
==
NULL
)
goto
out
;
sock_init_data
(
sock
,
sk
);
rc
=
0
;
err
=
0
;
sk
->
sk_no_check
=
answer_no_check
;
if
(
INET_PROTOSW_REUSE
&
answer_flags
)
sk
->
sk_reuse
=
1
;
...
...
@@ -202,14 +221,14 @@ static int inet6_create(struct socket *sock, int protocol)
sk
->
sk_prot
->
hash
(
sk
);
}
if
(
sk
->
sk_prot
->
init
)
{
rc
=
sk
->
sk_prot
->
init
(
sk
);
if
(
rc
)
{
err
=
sk
->
sk_prot
->
init
(
sk
);
if
(
err
)
{
sk_common_release
(
sk
);
goto
out
;
}
}
out:
return
rc
;
return
err
;
out_rcu_unlock:
rcu_read_unlock
();
goto
out
;
...
...
net/ipv6/mcast.c
View file @
b3c6aeb3
...
...
@@ -1231,6 +1231,11 @@ int igmp6_event_report(struct sk_buff *skb)
if
(
skb
->
pkt_type
==
PACKET_LOOPBACK
)
return
0
;
/* send our report if the MC router may not have heard this report */
if
(
skb
->
pkt_type
!=
PACKET_MULTICAST
&&
skb
->
pkt_type
!=
PACKET_BROADCAST
)
return
0
;
if
(
!
pskb_may_pull
(
skb
,
sizeof
(
struct
in6_addr
)))
return
-
EINVAL
;
...
...
net/sctp/socket.c
View file @
b3c6aeb3
...
...
@@ -4743,11 +4743,6 @@ static struct sk_buff *sctp_skb_recv_datagram(struct sock *sk, int flags,
struct
sk_buff
*
skb
;
long
timeo
;
/* Caller is allowed not to check sk->sk_err before calling. */
error
=
sock_error
(
sk
);
if
(
error
)
goto
no_packet
;
timeo
=
sock_rcvtimeo
(
sk
,
noblock
);
SCTP_DEBUG_PRINTK
(
"Timeout: timeo: %ld, MAX: %ld.
\n
"
,
...
...
@@ -4774,6 +4769,11 @@ static struct sk_buff *sctp_skb_recv_datagram(struct sock *sk, int flags,
if
(
skb
)
return
skb
;
/* Caller is allowed not to check sk->sk_err before calling. */
error
=
sock_error
(
sk
);
if
(
error
)
goto
no_packet
;
if
(
sk
->
sk_shutdown
&
RCV_SHUTDOWN
)
break
;
...
...
net/sctp/transport.c
View file @
b3c6aeb3
...
...
@@ -261,7 +261,8 @@ void sctp_transport_route(struct sctp_transport *transport,
* association's active path for getsockname().
*/
if
(
asoc
&&
(
transport
==
asoc
->
peer
.
active_path
))
af
->
to_sk_saddr
(
&
transport
->
saddr
,
asoc
->
base
.
sk
);
opt
->
pf
->
af
->
to_sk_saddr
(
&
transport
->
saddr
,
asoc
->
base
.
sk
);
}
else
transport
->
pmtu
=
SCTP_DEFAULT_MAXSEGMENT
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment