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
814d8ffd
Commit
814d8ffd
authored
Jun 13, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
parents
386bfcf5
1c2fb7f9
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
285 additions
and
115 deletions
+285
-115
Documentation/networking/vortex.txt
Documentation/networking/vortex.txt
+1
-1
MAINTAINERS
MAINTAINERS
+24
-24
drivers/net/r8169.c
drivers/net/r8169.c
+1
-1
include/linux/if_tr.h
include/linux/if_tr.h
+2
-0
include/linux/sysctl.h
include/linux/sysctl.h
+1
-0
include/net/ip.h
include/net/ip.h
+1
-0
net/ipv4/af_inet.c
net/ipv4/af_inet.c
+1
-0
net/ipv4/icmp.c
net/ipv4/icmp.c
+7
-2
net/ipv4/multipath_drr.c
net/ipv4/multipath_drr.c
+2
-0
net/ipv4/multipath_random.c
net/ipv4/multipath_random.c
+2
-0
net/ipv4/multipath_rr.c
net/ipv4/multipath_rr.c
+2
-0
net/ipv4/multipath_wrandom.c
net/ipv4/multipath_wrandom.c
+2
-0
net/ipv4/sysctl_net_ipv4.c
net/ipv4/sysctl_net_ipv4.c
+9
-0
net/ipv4/tcp.c
net/ipv4/tcp.c
+1
-1
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+1
-0
net/ipv6/icmp.c
net/ipv6/icmp.c
+10
-4
net/sched/act_api.c
net/sched/act_api.c
+1
-1
net/sctp/input.c
net/sctp/input.c
+34
-15
net/sctp/ipv6.c
net/sctp/ipv6.c
+15
-21
net/sctp/proc.c
net/sctp/proc.c
+151
-43
net/sctp/protocol.c
net/sctp/protocol.c
+5
-2
net/sctp/socket.c
net/sctp/socket.c
+12
-0
No files found.
Documentation/networking/vortex.txt
View file @
814d8ffd
...
@@ -12,7 +12,7 @@ Don is no longer the prime maintainer of this version of the driver.
...
@@ -12,7 +12,7 @@ Don is no longer the prime maintainer of this version of the driver.
Please report problems to one or more of:
Please report problems to one or more of:
Andrew Morton <andrewm@uow.edu.au>
Andrew Morton <andrewm@uow.edu.au>
Netdev mailing list <netdev@
oss.sgi.com
>
Netdev mailing list <netdev@
vger.kernel.org
>
Linux kernel mailing list <linux-kernel@vger.kernel.org>
Linux kernel mailing list <linux-kernel@vger.kernel.org>
Please note the 'Reporting and Diagnosing Problems' section at the end
Please note the 'Reporting and Diagnosing Problems' section at the end
...
...
MAINTAINERS
View file @
814d8ffd
...
@@ -73,7 +73,7 @@ S: Status, one of the following:
...
@@ -73,7 +73,7 @@ S: Status, one of the following:
3C359 NETWORK DRIVER
3C359 NETWORK DRIVER
P: Mike Phillips
P: Mike Phillips
M: mikep@linuxtr.net
M: mikep@linuxtr.net
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
L: linux-tr@linuxtr.net
L: linux-tr@linuxtr.net
W: http://www.linuxtr.net
W: http://www.linuxtr.net
S: Maintained
S: Maintained
...
@@ -81,13 +81,13 @@ S: Maintained
...
@@ -81,13 +81,13 @@ S: Maintained
3C505 NETWORK DRIVER
3C505 NETWORK DRIVER
P: Philip Blundell
P: Philip Blundell
M: philb@gnu.org
M: philb@gnu.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
3CR990 NETWORK DRIVER
3CR990 NETWORK DRIVER
P: David Dillow
P: David Dillow
M: dave@thedillows.org
M: dave@thedillows.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
3W-XXXX ATA-RAID CONTROLLER DRIVER
3W-XXXX ATA-RAID CONTROLLER DRIVER
...
@@ -130,7 +130,7 @@ S: Maintained
...
@@ -130,7 +130,7 @@ S: Maintained
8169 10/100/1000 GIGABIT ETHERNET DRIVER
8169 10/100/1000 GIGABIT ETHERNET DRIVER
P: Francois Romieu
P: Francois Romieu
M: romieu@fr.zoreil.com
M: romieu@fr.zoreil.com
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
...
@@ -143,7 +143,7 @@ S: Maintained
...
@@ -143,7 +143,7 @@ S: Maintained
8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
P: Paul Gortmaker
P: Paul Gortmaker
M: p_gortmaker@yahoo.com
M: p_gortmaker@yahoo.com
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
A2232 SERIAL BOARD DRIVER
A2232 SERIAL BOARD DRIVER
...
@@ -332,7 +332,7 @@ S: Maintained
...
@@ -332,7 +332,7 @@ S: Maintained
ARPD SUPPORT
ARPD SUPPORT
P: Jonathan Layes
P: Jonathan Layes
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
ASUS ACPI EXTRAS DRIVER
ASUS ACPI EXTRAS DRIVER
...
@@ -706,7 +706,7 @@ S: Orphaned
...
@@ -706,7 +706,7 @@ S: Orphaned
DIGI RIGHTSWITCH NETWORK DRIVER
DIGI RIGHTSWITCH NETWORK DRIVER
P: Rick Richardson
P: Rick Richardson
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
W: http://www.digi.com
W: http://www.digi.com
S: Orphaned
S: Orphaned
...
@@ -812,7 +812,7 @@ S: Maintained
...
@@ -812,7 +812,7 @@ S: Maintained
ETHEREXPRESS-16 NETWORK DRIVER
ETHEREXPRESS-16 NETWORK DRIVER
P: Philip Blundell
P: Philip Blundell
M: philb@gnu.org
M: philb@gnu.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
ETHERNET BRIDGE
ETHERNET BRIDGE
...
@@ -875,7 +875,7 @@ S: Maintained
...
@@ -875,7 +875,7 @@ S: Maintained
FRAME RELAY DLCI/FRAD (Sangoma drivers too)
FRAME RELAY DLCI/FRAD (Sangoma drivers too)
P: Mike McLagan
P: Mike McLagan
M: mike.mclagan@linux.org
M: mike.mclagan@linux.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
FREEVXFS FILESYSTEM
FREEVXFS FILESYSTEM
...
@@ -1215,7 +1215,7 @@ S: Maintained
...
@@ -1215,7 +1215,7 @@ S: Maintained
IPX NETWORK LAYER
IPX NETWORK LAYER
P: Arnaldo Carvalho de Melo
P: Arnaldo Carvalho de Melo
M: acme@conectiva.com.br
M: acme@conectiva.com.br
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
IRDA SUBSYSTEM
IRDA SUBSYSTEM
...
@@ -1482,7 +1482,7 @@ MARVELL MV64340 ETHERNET DRIVER
...
@@ -1482,7 +1482,7 @@ MARVELL MV64340 ETHERNET DRIVER
P: Manish Lachwani
P: Manish Lachwani
M: Manish_Lachwani@pmc-sierra.com
M: Manish_Lachwani@pmc-sierra.com
L: linux-mips@linux-mips.org
L: linux-mips@linux-mips.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Supported
S: Supported
MATROX FRAMEBUFFER DRIVER
MATROX FRAMEBUFFER DRIVER
...
@@ -1592,13 +1592,13 @@ P: Andrew Morton
...
@@ -1592,13 +1592,13 @@ P: Andrew Morton
M: akpm@osdl.org
M: akpm@osdl.org
P: Jeff Garzik
P: Jeff Garzik
M: jgarzik@pobox.com
M: jgarzik@pobox.com
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
NETWORKING [GENERAL]
NETWORKING [GENERAL]
P: Networking Team
P: Networking Team
M: netdev@
oss.sgi.com
M: netdev@
vger.kernel.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
NETWORKING [IPv4/IPv6]
NETWORKING [IPv4/IPv6]
...
@@ -1614,7 +1614,7 @@ P: Hideaki YOSHIFUJI
...
@@ -1614,7 +1614,7 @@ P: Hideaki YOSHIFUJI
M: yoshfuji@linux-ipv6.org
M: yoshfuji@linux-ipv6.org
P: Patrick McHardy
P: Patrick McHardy
M: kaber@coreworks.de
M: kaber@coreworks.de
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
IPVS
IPVS
...
@@ -1634,7 +1634,7 @@ NI5010 NETWORK DRIVER
...
@@ -1634,7 +1634,7 @@ NI5010 NETWORK DRIVER
P: Jan-Pascal van Best and Andreas Mohr
P: Jan-Pascal van Best and Andreas Mohr
M: Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl>
M: Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl>
M: Andreas Mohr <100.30936@germany.net>
M: Andreas Mohr <100.30936@germany.net>
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
...
@@ -1676,7 +1676,7 @@ P: Peter De Shrijver
...
@@ -1676,7 +1676,7 @@ P: Peter De Shrijver
M: p2@ace.ulyssis.student.kuleuven.ac.be
M: p2@ace.ulyssis.student.kuleuven.ac.be
P: Mike Phillips
P: Mike Phillips
M: mikep@linuxtr.net
M: mikep@linuxtr.net
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
L: linux-tr@linuxtr.net
L: linux-tr@linuxtr.net
W: http://www.linuxtr.net
W: http://www.linuxtr.net
S: Maintained
S: Maintained
...
@@ -1783,7 +1783,7 @@ S: Unmaintained
...
@@ -1783,7 +1783,7 @@ S: Unmaintained
PCNET32 NETWORK DRIVER
PCNET32 NETWORK DRIVER
P: Thomas Bogendrfer
P: Thomas Bogendrfer
M: tsbogend@alpha.franken.de
M: tsbogend@alpha.franken.de
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
PHRAM MTD DRIVER
PHRAM MTD DRIVER
...
@@ -1795,7 +1795,7 @@ S: Maintained
...
@@ -1795,7 +1795,7 @@ S: Maintained
POSIX CLOCKS and TIMERS
POSIX CLOCKS and TIMERS
P: George Anzinger
P: George Anzinger
M: george@mvista.com
M: george@mvista.com
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Supported
S: Supported
PNP SUPPORT
PNP SUPPORT
...
@@ -1830,7 +1830,7 @@ S: Supported
...
@@ -1830,7 +1830,7 @@ S: Supported
PRISM54 WIRELESS DRIVER
PRISM54 WIRELESS DRIVER
P: Prism54 Development Team
P: Prism54 Development Team
M: prism54-private@prism54.org
M: prism54-private@prism54.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
W: http://prism54.org
W: http://prism54.org
S: Maintained
S: Maintained
...
@@ -2047,7 +2047,7 @@ SIS 900/7016 FAST ETHERNET DRIVER
...
@@ -2047,7 +2047,7 @@ SIS 900/7016 FAST ETHERNET DRIVER
P: Daniele Venzano
P: Daniele Venzano
M: venza@brownhat.org
M: venza@brownhat.org
W: http://www.brownhat.org/sis900.html
W: http://www.brownhat.org/sis900.html
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
SIS FRAMEBUFFER DRIVER
SIS FRAMEBUFFER DRIVER
...
@@ -2106,7 +2106,7 @@ S: Maintained
...
@@ -2106,7 +2106,7 @@ S: Maintained
SONIC NETWORK DRIVER
SONIC NETWORK DRIVER
P: Thomas Bogendoerfer
P: Thomas Bogendoerfer
M: tsbogend@alpha.franken.de
M: tsbogend@alpha.franken.de
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Maintained
S: Maintained
SONY VAIO CONTROL DEVICE DRIVER
SONY VAIO CONTROL DEVICE DRIVER
...
@@ -2163,7 +2163,7 @@ S: Supported
...
@@ -2163,7 +2163,7 @@ S: Supported
SPX NETWORK LAYER
SPX NETWORK LAYER
P: Jay Schulist
P: Jay Schulist
M: jschlst@samba.org
M: jschlst@samba.org
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
S: Supported
S: Supported
SRM (Alpha) environment access
SRM (Alpha) environment access
...
@@ -2242,7 +2242,7 @@ S: Maintained
...
@@ -2242,7 +2242,7 @@ S: Maintained
TOKEN-RING NETWORK DRIVER
TOKEN-RING NETWORK DRIVER
P: Mike Phillips
P: Mike Phillips
M: mikep@linuxtr.net
M: mikep@linuxtr.net
L: netdev@
oss.sgi.com
L: netdev@
vger.kernel.org
L: linux-tr@linuxtr.net
L: linux-tr@linuxtr.net
W: http://www.linuxtr.net
W: http://www.linuxtr.net
S: Maintained
S: Maintained
...
...
drivers/net/r8169.c
View file @
814d8ffd
...
@@ -415,7 +415,7 @@ struct rtl8169_private {
...
@@ -415,7 +415,7 @@ struct rtl8169_private {
struct
work_struct
task
;
struct
work_struct
task
;
};
};
MODULE_AUTHOR
(
"Realtek and the Linux r8169 crew <netdev@
oss.sgi.com
>"
);
MODULE_AUTHOR
(
"Realtek and the Linux r8169 crew <netdev@
vger.kernel.org
>"
);
MODULE_DESCRIPTION
(
"RealTek RTL-8169 Gigabit Ethernet driver"
);
MODULE_DESCRIPTION
(
"RealTek RTL-8169 Gigabit Ethernet driver"
);
module_param_array
(
media
,
int
,
&
num_media
,
0
);
module_param_array
(
media
,
int
,
&
num_media
,
0
);
module_param
(
rx_copybreak
,
int
,
0
);
module_param
(
rx_copybreak
,
int
,
0
);
...
...
include/linux/if_tr.h
View file @
814d8ffd
...
@@ -19,6 +19,8 @@
...
@@ -19,6 +19,8 @@
#ifndef _LINUX_IF_TR_H
#ifndef _LINUX_IF_TR_H
#define _LINUX_IF_TR_H
#define _LINUX_IF_TR_H
#include <asm/byteorder.h>
/* For __be16 */
/* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble
/* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble
and FCS/CRC (frame check sequence). */
and FCS/CRC (frame check sequence). */
#define TR_ALEN 6
/* Octets in one token-ring addr */
#define TR_ALEN 6
/* Octets in one token-ring addr */
...
...
include/linux/sysctl.h
View file @
814d8ffd
...
@@ -346,6 +346,7 @@ enum
...
@@ -346,6 +346,7 @@ enum
NET_TCP_MODERATE_RCVBUF
=
106
,
NET_TCP_MODERATE_RCVBUF
=
106
,
NET_TCP_TSO_WIN_DIVISOR
=
107
,
NET_TCP_TSO_WIN_DIVISOR
=
107
,
NET_TCP_BIC_BETA
=
108
,
NET_TCP_BIC_BETA
=
108
,
NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR
=
109
,
};
};
enum
{
enum
{
...
...
include/net/ip.h
View file @
814d8ffd
...
@@ -163,6 +163,7 @@ DECLARE_SNMP_STAT(struct linux_mib, net_statistics);
...
@@ -163,6 +163,7 @@ DECLARE_SNMP_STAT(struct linux_mib, net_statistics);
extern
int
sysctl_local_port_range
[
2
];
extern
int
sysctl_local_port_range
[
2
];
extern
int
sysctl_ip_default_ttl
;
extern
int
sysctl_ip_default_ttl
;
extern
int
sysctl_ip_nonlocal_bind
;
#ifdef CONFIG_INET
#ifdef CONFIG_INET
/* The function in 2.2 was invalid, producing wrong result for
/* The function in 2.2 was invalid, producing wrong result for
...
...
net/ipv4/af_inet.c
View file @
814d8ffd
...
@@ -1181,6 +1181,7 @@ EXPORT_SYMBOL(inet_stream_connect);
...
@@ -1181,6 +1181,7 @@ EXPORT_SYMBOL(inet_stream_connect);
EXPORT_SYMBOL
(
inet_stream_ops
);
EXPORT_SYMBOL
(
inet_stream_ops
);
EXPORT_SYMBOL
(
inet_unregister_protosw
);
EXPORT_SYMBOL
(
inet_unregister_protosw
);
EXPORT_SYMBOL
(
net_statistics
);
EXPORT_SYMBOL
(
net_statistics
);
EXPORT_SYMBOL
(
sysctl_ip_nonlocal_bind
);
#ifdef INET_REFCNT_DEBUG
#ifdef INET_REFCNT_DEBUG
EXPORT_SYMBOL
(
inet_sock_nr
);
EXPORT_SYMBOL
(
inet_sock_nr
);
...
...
net/ipv4/icmp.c
View file @
814d8ffd
...
@@ -207,6 +207,7 @@ int sysctl_icmp_ignore_bogus_error_responses;
...
@@ -207,6 +207,7 @@ int sysctl_icmp_ignore_bogus_error_responses;
int
sysctl_icmp_ratelimit
=
1
*
HZ
;
int
sysctl_icmp_ratelimit
=
1
*
HZ
;
int
sysctl_icmp_ratemask
=
0x1818
;
int
sysctl_icmp_ratemask
=
0x1818
;
int
sysctl_icmp_errors_use_inbound_ifaddr
;
/*
/*
* ICMP control array. This specifies what to do with each ICMP.
* ICMP control array. This specifies what to do with each ICMP.
...
@@ -511,8 +512,12 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, u32 info)
...
@@ -511,8 +512,12 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, u32 info)
*/
*/
saddr
=
iph
->
daddr
;
saddr
=
iph
->
daddr
;
if
(
!
(
rt
->
rt_flags
&
RTCF_LOCAL
))
if
(
!
(
rt
->
rt_flags
&
RTCF_LOCAL
))
{
saddr
=
0
;
if
(
sysctl_icmp_errors_use_inbound_ifaddr
)
saddr
=
inet_select_addr
(
skb_in
->
dev
,
0
,
RT_SCOPE_LINK
);
else
saddr
=
0
;
}
tos
=
icmp_pointers
[
type
].
error
?
((
iph
->
tos
&
IPTOS_TOS_MASK
)
|
tos
=
icmp_pointers
[
type
].
error
?
((
iph
->
tos
&
IPTOS_TOS_MASK
)
|
IPTOS_PREC_INTERNETCONTROL
)
:
IPTOS_PREC_INTERNETCONTROL
)
:
...
...
net/ipv4/multipath_drr.c
View file @
814d8ffd
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
#include <linux/igmp.h>
#include <linux/igmp.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/module.h>
#include <linux/mroute.h>
#include <linux/mroute.h>
#include <linux/init.h>
#include <linux/init.h>
#include <net/ip.h>
#include <net/ip.h>
...
@@ -247,3 +248,4 @@ static void __exit drr_exit(void)
...
@@ -247,3 +248,4 @@ static void __exit drr_exit(void)
module_init
(
drr_init
);
module_init
(
drr_init
);
module_exit
(
drr_exit
);
module_exit
(
drr_exit
);
MODULE_LICENSE
(
"GPL"
);
net/ipv4/multipath_random.c
View file @
814d8ffd
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
#include <linux/igmp.h>
#include <linux/igmp.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/module.h>
#include <linux/mroute.h>
#include <linux/mroute.h>
#include <linux/init.h>
#include <linux/init.h>
#include <net/ip.h>
#include <net/ip.h>
...
@@ -126,3 +127,4 @@ static void __exit random_exit(void)
...
@@ -126,3 +127,4 @@ static void __exit random_exit(void)
module_init
(
random_init
);
module_init
(
random_init
);
module_exit
(
random_exit
);
module_exit
(
random_exit
);
MODULE_LICENSE
(
"GPL"
);
net/ipv4/multipath_rr.c
View file @
814d8ffd
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
#include <linux/igmp.h>
#include <linux/igmp.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/module.h>
#include <linux/mroute.h>
#include <linux/mroute.h>
#include <linux/init.h>
#include <linux/init.h>
#include <net/ip.h>
#include <net/ip.h>
...
@@ -93,3 +94,4 @@ static void __exit rr_exit(void)
...
@@ -93,3 +94,4 @@ static void __exit rr_exit(void)
module_init
(
rr_init
);
module_init
(
rr_init
);
module_exit
(
rr_exit
);
module_exit
(
rr_exit
);
MODULE_LICENSE
(
"GPL"
);
net/ipv4/multipath_wrandom.c
View file @
814d8ffd
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
#include <linux/igmp.h>
#include <linux/igmp.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/module.h>
#include <linux/mroute.h>
#include <linux/mroute.h>
#include <linux/init.h>
#include <linux/init.h>
#include <net/ip.h>
#include <net/ip.h>
...
@@ -342,3 +343,4 @@ static void __exit wrandom_exit(void)
...
@@ -342,3 +343,4 @@ static void __exit wrandom_exit(void)
module_init
(
wrandom_init
);
module_init
(
wrandom_init
);
module_exit
(
wrandom_exit
);
module_exit
(
wrandom_exit
);
MODULE_LICENSE
(
"GPL"
);
net/ipv4/sysctl_net_ipv4.c
View file @
814d8ffd
...
@@ -23,6 +23,7 @@ extern int sysctl_ip_nonlocal_bind;
...
@@ -23,6 +23,7 @@ extern int sysctl_ip_nonlocal_bind;
extern
int
sysctl_icmp_echo_ignore_all
;
extern
int
sysctl_icmp_echo_ignore_all
;
extern
int
sysctl_icmp_echo_ignore_broadcasts
;
extern
int
sysctl_icmp_echo_ignore_broadcasts
;
extern
int
sysctl_icmp_ignore_bogus_error_responses
;
extern
int
sysctl_icmp_ignore_bogus_error_responses
;
extern
int
sysctl_icmp_errors_use_inbound_ifaddr
;
/* From ip_fragment.c */
/* From ip_fragment.c */
extern
int
sysctl_ipfrag_low_thresh
;
extern
int
sysctl_ipfrag_low_thresh
;
...
@@ -395,6 +396,14 @@ ctl_table ipv4_table[] = {
...
@@ -395,6 +396,14 @@ ctl_table ipv4_table[] = {
.
mode
=
0644
,
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
.
proc_handler
=
&
proc_dointvec
},
},
{
.
ctl_name
=
NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR
,
.
procname
=
"icmp_errors_use_inbound_ifaddr"
,
.
data
=
&
sysctl_icmp_errors_use_inbound_ifaddr
,
.
maxlen
=
sizeof
(
int
),
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
},
{
{
.
ctl_name
=
NET_IPV4_ROUTE
,
.
ctl_name
=
NET_IPV4_ROUTE
,
.
procname
=
"route"
,
.
procname
=
"route"
,
...
...
net/ipv4/tcp.c
View file @
814d8ffd
...
@@ -2338,7 +2338,7 @@ void __init tcp_init(void)
...
@@ -2338,7 +2338,7 @@ void __init tcp_init(void)
(
tcp_bhash_size
*
sizeof
(
struct
tcp_bind_hashbucket
));
(
tcp_bhash_size
*
sizeof
(
struct
tcp_bind_hashbucket
));
order
++
)
order
++
)
;
;
if
(
order
>
4
)
{
if
(
order
>
=
4
)
{
sysctl_local_port_range
[
0
]
=
32768
;
sysctl_local_port_range
[
0
]
=
32768
;
sysctl_local_port_range
[
1
]
=
61000
;
sysctl_local_port_range
[
1
]
=
61000
;
sysctl_tcp_max_tw_buckets
=
180000
;
sysctl_tcp_max_tw_buckets
=
180000
;
...
...
net/ipv6/addrconf.c
View file @
814d8ffd
...
@@ -372,6 +372,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
...
@@ -372,6 +372,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
ndev
->
regen_timer
.
data
=
(
unsigned
long
)
ndev
;
ndev
->
regen_timer
.
data
=
(
unsigned
long
)
ndev
;
if
((
dev
->
flags
&
IFF_LOOPBACK
)
||
if
((
dev
->
flags
&
IFF_LOOPBACK
)
||
dev
->
type
==
ARPHRD_TUNNEL
||
dev
->
type
==
ARPHRD_TUNNEL
||
dev
->
type
==
ARPHRD_NONE
||
dev
->
type
==
ARPHRD_SIT
)
{
dev
->
type
==
ARPHRD_SIT
)
{
printk
(
KERN_INFO
printk
(
KERN_INFO
"Disabled Privacy Extensions on device %p(%s)
\n
"
,
"Disabled Privacy Extensions on device %p(%s)
\n
"
,
...
...
net/ipv6/icmp.c
View file @
814d8ffd
...
@@ -277,8 +277,8 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
...
@@ -277,8 +277,8 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
{
{
struct
inet6_dev
*
idev
=
NULL
;
struct
inet6_dev
*
idev
=
NULL
;
struct
ipv6hdr
*
hdr
=
skb
->
nh
.
ipv6h
;
struct
ipv6hdr
*
hdr
=
skb
->
nh
.
ipv6h
;
struct
sock
*
sk
=
icmpv6_socket
->
sk
;
struct
sock
*
sk
;
struct
ipv6_pinfo
*
np
=
inet6_sk
(
sk
)
;
struct
ipv6_pinfo
*
np
;
struct
in6_addr
*
saddr
=
NULL
;
struct
in6_addr
*
saddr
=
NULL
;
struct
dst_entry
*
dst
;
struct
dst_entry
*
dst
;
struct
icmp6hdr
tmp_hdr
;
struct
icmp6hdr
tmp_hdr
;
...
@@ -358,6 +358,9 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
...
@@ -358,6 +358,9 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
if
(
icmpv6_xmit_lock
())
if
(
icmpv6_xmit_lock
())
return
;
return
;
sk
=
icmpv6_socket
->
sk
;
np
=
inet6_sk
(
sk
);
if
(
!
icmpv6_xrlim_allow
(
sk
,
type
,
&
fl
))
if
(
!
icmpv6_xrlim_allow
(
sk
,
type
,
&
fl
))
goto
out
;
goto
out
;
...
@@ -423,9 +426,9 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
...
@@ -423,9 +426,9 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
static
void
icmpv6_echo_reply
(
struct
sk_buff
*
skb
)
static
void
icmpv6_echo_reply
(
struct
sk_buff
*
skb
)
{
{
struct
sock
*
sk
=
icmpv6_socket
->
sk
;
struct
sock
*
sk
;
struct
inet6_dev
*
idev
;
struct
inet6_dev
*
idev
;
struct
ipv6_pinfo
*
np
=
inet6_sk
(
sk
)
;
struct
ipv6_pinfo
*
np
;
struct
in6_addr
*
saddr
=
NULL
;
struct
in6_addr
*
saddr
=
NULL
;
struct
icmp6hdr
*
icmph
=
(
struct
icmp6hdr
*
)
skb
->
h
.
raw
;
struct
icmp6hdr
*
icmph
=
(
struct
icmp6hdr
*
)
skb
->
h
.
raw
;
struct
icmp6hdr
tmp_hdr
;
struct
icmp6hdr
tmp_hdr
;
...
@@ -454,6 +457,9 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
...
@@ -454,6 +457,9 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
if
(
icmpv6_xmit_lock
())
if
(
icmpv6_xmit_lock
())
return
;
return
;
sk
=
icmpv6_socket
->
sk
;
np
=
inet6_sk
(
sk
);
if
(
!
fl
.
oif
&&
ipv6_addr_is_multicast
(
&
fl
.
fl6_dst
))
if
(
!
fl
.
oif
&&
ipv6_addr_is_multicast
(
&
fl
.
fl6_dst
))
fl
.
oif
=
np
->
mcast_oif
;
fl
.
oif
=
np
->
mcast_oif
;
...
...
net/sched/act_api.c
View file @
814d8ffd
...
@@ -881,7 +881,7 @@ static int __init tc_action_init(void)
...
@@ -881,7 +881,7 @@ static int __init tc_action_init(void)
link_p
[
RTM_GETACTION
-
RTM_BASE
].
dumpit
=
tc_dump_action
;
link_p
[
RTM_GETACTION
-
RTM_BASE
].
dumpit
=
tc_dump_action
;
}
}
printk
(
"TC classifier action (bugs to netdev@
oss.sgi.com
cc "
printk
(
"TC classifier action (bugs to netdev@
vger.kernel.org
cc "
"hadi@cyberus.ca)
\n
"
);
"hadi@cyberus.ca)
\n
"
);
return
0
;
return
0
;
}
}
...
...
net/sctp/input.c
View file @
814d8ffd
...
@@ -178,6 +178,37 @@ int sctp_rcv(struct sk_buff *skb)
...
@@ -178,6 +178,37 @@ int sctp_rcv(struct sk_buff *skb)
asoc
=
__sctp_rcv_lookup
(
skb
,
&
src
,
&
dest
,
&
transport
);
asoc
=
__sctp_rcv_lookup
(
skb
,
&
src
,
&
dest
,
&
transport
);
if
(
!
asoc
)
ep
=
__sctp_rcv_lookup_endpoint
(
&
dest
);
/* Retrieve the common input handling substructure. */
rcvr
=
asoc
?
&
asoc
->
base
:
&
ep
->
base
;
sk
=
rcvr
->
sk
;
/*
* If a frame arrives on an interface and the receiving socket is
* bound to another interface, via SO_BINDTODEVICE, treat it as OOTB
*/
if
(
sk
->
sk_bound_dev_if
&&
(
sk
->
sk_bound_dev_if
!=
af
->
skb_iif
(
skb
)))
{
sock_put
(
sk
);
if
(
asoc
)
{
sctp_association_put
(
asoc
);
asoc
=
NULL
;
}
else
{
sctp_endpoint_put
(
ep
);
ep
=
NULL
;
}
sk
=
sctp_get_ctl_sock
();
ep
=
sctp_sk
(
sk
)
->
ep
;
sctp_endpoint_hold
(
ep
);
sock_hold
(
sk
);
rcvr
=
&
ep
->
base
;
}
if
(
atomic_read
(
&
sk
->
sk_rmem_alloc
)
>=
sk
->
sk_rcvbuf
)
goto
discard_release
;
/*
/*
* RFC 2960, 8.4 - Handle "Out of the blue" Packets.
* RFC 2960, 8.4 - Handle "Out of the blue" Packets.
* An SCTP packet is called an "out of the blue" (OOTB)
* An SCTP packet is called an "out of the blue" (OOTB)
...
@@ -187,22 +218,12 @@ int sctp_rcv(struct sk_buff *skb)
...
@@ -187,22 +218,12 @@ int sctp_rcv(struct sk_buff *skb)
* packet belongs.
* packet belongs.
*/
*/
if
(
!
asoc
)
{
if
(
!
asoc
)
{
ep
=
__sctp_rcv_lookup_endpoint
(
&
dest
);
if
(
sctp_rcv_ootb
(
skb
))
{
if
(
sctp_rcv_ootb
(
skb
))
{
SCTP_INC_STATS_BH
(
SCTP_MIB_OUTOFBLUES
);
SCTP_INC_STATS_BH
(
SCTP_MIB_OUTOFBLUES
);
goto
discard_release
;
goto
discard_release
;
}
}
}
}
/* Retrieve the common input handling substructure. */
rcvr
=
asoc
?
&
asoc
->
base
:
&
ep
->
base
;
sk
=
rcvr
->
sk
;
if
((
sk
)
&&
(
atomic_read
(
&
sk
->
sk_rmem_alloc
)
>=
sk
->
sk_rcvbuf
))
{
goto
discard_release
;
}
/* SCTP seems to always need a timestamp right now (FIXME) */
/* SCTP seems to always need a timestamp right now (FIXME) */
if
(
skb
->
stamp
.
tv_sec
==
0
)
{
if
(
skb
->
stamp
.
tv_sec
==
0
)
{
do_gettimeofday
(
&
skb
->
stamp
);
do_gettimeofday
(
&
skb
->
stamp
);
...
@@ -265,13 +286,11 @@ int sctp_rcv(struct sk_buff *skb)
...
@@ -265,13 +286,11 @@ int sctp_rcv(struct sk_buff *skb)
discard_release:
discard_release:
/* Release any structures we may be holding. */
/* Release any structures we may be holding. */
if
(
asoc
)
{
sock_put
(
sk
);
sock_put
(
asoc
->
base
.
sk
);
if
(
asoc
)
sctp_association_put
(
asoc
);
sctp_association_put
(
asoc
);
}
else
{
else
sock_put
(
ep
->
base
.
sk
);
sctp_endpoint_put
(
ep
);
sctp_endpoint_put
(
ep
);
}
goto
discard_it
;
goto
discard_it
;
}
}
...
...
net/sctp/ipv6.c
View file @
814d8ffd
...
@@ -812,26 +812,23 @@ static int sctp_inet6_bind_verify(struct sctp_sock *opt, union sctp_addr *addr)
...
@@ -812,26 +812,23 @@ static int sctp_inet6_bind_verify(struct sctp_sock *opt, union sctp_addr *addr)
if
(
addr
->
sa
.
sa_family
!=
AF_INET6
)
if
(
addr
->
sa
.
sa_family
!=
AF_INET6
)
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
else
{
else
{
struct
sock
*
sk
;
int
type
=
ipv6_addr_type
(
&
addr
->
v6
.
sin6_addr
);
int
type
=
ipv6_addr_type
(
&
addr
->
v6
.
sin6_addr
);
sk
=
sctp_opt2sk
(
opt
);
struct
net_device
*
dev
;
if
(
type
&
IPV6_ADDR_LINKLOCAL
)
{
if
(
type
&
IPV6_ADDR_LINKLOCAL
)
{
/* Note: Behavior similar to af_inet6.c:
if
(
!
addr
->
v6
.
sin6_scope_id
)
* 1) Overrides previous bound_dev_if
return
0
;
* 2) Destructive even if bind isn't successful.
dev
=
dev_get_by_index
(
addr
->
v6
.
sin6_scope_id
);
*/
if
(
!
dev
)
if
(
addr
->
v6
.
sin6_scope_id
)
sk
->
sk_bound_dev_if
=
addr
->
v6
.
sin6_scope_id
;
if
(
!
sk
->
sk_bound_dev_if
)
return
0
;
return
0
;
dev_put
(
dev
);
}
}
af
=
opt
->
pf
->
af
;
af
=
opt
->
pf
->
af
;
}
}
return
af
->
available
(
addr
,
opt
);
return
af
->
available
(
addr
,
opt
);
}
}
/* Verify that the provided sockaddr looks
bi
ndable. Common verification,
/* Verify that the provided sockaddr looks
se
ndable. Common verification,
* has already been taken care of.
* has already been taken care of.
*/
*/
static
int
sctp_inet6_send_verify
(
struct
sctp_sock
*
opt
,
union
sctp_addr
*
addr
)
static
int
sctp_inet6_send_verify
(
struct
sctp_sock
*
opt
,
union
sctp_addr
*
addr
)
...
@@ -842,19 +839,16 @@ static int sctp_inet6_send_verify(struct sctp_sock *opt, union sctp_addr *addr)
...
@@ -842,19 +839,16 @@ static int sctp_inet6_send_verify(struct sctp_sock *opt, union sctp_addr *addr)
if
(
addr
->
sa
.
sa_family
!=
AF_INET6
)
if
(
addr
->
sa
.
sa_family
!=
AF_INET6
)
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
else
{
else
{
struct
sock
*
sk
;
int
type
=
ipv6_addr_type
(
&
addr
->
v6
.
sin6_addr
);
int
type
=
ipv6_addr_type
(
&
addr
->
v6
.
sin6_addr
);
sk
=
sctp_opt2sk
(
opt
);
struct
net_device
*
dev
;
if
(
type
&
IPV6_ADDR_LINKLOCAL
)
{
if
(
type
&
IPV6_ADDR_LINKLOCAL
)
{
/* Note: Behavior similar to af_inet6.c:
if
(
!
addr
->
v6
.
sin6_scope_id
)
* 1) Overrides previous bound_dev_if
return
0
;
* 2) Destructive even if bind isn't successful.
dev
=
dev_get_by_index
(
addr
->
v6
.
sin6_scope_id
);
*/
if
(
!
dev
)
if
(
addr
->
v6
.
sin6_scope_id
)
sk
->
sk_bound_dev_if
=
addr
->
v6
.
sin6_scope_id
;
if
(
!
sk
->
sk_bound_dev_if
)
return
0
;
return
0
;
dev_put
(
dev
);
}
}
af
=
opt
->
pf
->
af
;
af
=
opt
->
pf
->
af
;
}
}
...
...
net/sctp/proc.c
View file @
814d8ffd
...
@@ -132,14 +132,25 @@ void sctp_snmp_proc_exit(void)
...
@@ -132,14 +132,25 @@ void sctp_snmp_proc_exit(void)
static
void
sctp_seq_dump_local_addrs
(
struct
seq_file
*
seq
,
struct
sctp_ep_common
*
epb
)
static
void
sctp_seq_dump_local_addrs
(
struct
seq_file
*
seq
,
struct
sctp_ep_common
*
epb
)
{
{
struct
list_head
*
pos
;
struct
list_head
*
pos
;
struct
sctp_association
*
asoc
;
struct
sctp_sockaddr_entry
*
laddr
;
struct
sctp_sockaddr_entry
*
laddr
;
union
sctp_addr
*
addr
;
struct
sctp_transport
*
peer
;
union
sctp_addr
*
addr
,
*
primary
=
NULL
;
struct
sctp_af
*
af
;
struct
sctp_af
*
af
;
if
(
epb
->
type
==
SCTP_EP_TYPE_ASSOCIATION
)
{
asoc
=
sctp_assoc
(
epb
);
peer
=
asoc
->
peer
.
primary_path
;
primary
=
&
peer
->
saddr
;
}
list_for_each
(
pos
,
&
epb
->
bind_addr
.
address_list
)
{
list_for_each
(
pos
,
&
epb
->
bind_addr
.
address_list
)
{
laddr
=
list_entry
(
pos
,
struct
sctp_sockaddr_entry
,
list
);
laddr
=
list_entry
(
pos
,
struct
sctp_sockaddr_entry
,
list
);
addr
=
(
union
sctp_addr
*
)
&
laddr
->
a
;
addr
=
(
union
sctp_addr
*
)
&
laddr
->
a
;
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
if
(
primary
&&
af
->
cmp_addr
(
addr
,
primary
))
{
seq_printf
(
seq
,
"*"
);
}
af
->
seq_dump_addr
(
seq
,
addr
);
af
->
seq_dump_addr
(
seq
,
addr
);
}
}
}
}
...
@@ -149,17 +160,54 @@ static void sctp_seq_dump_remote_addrs(struct seq_file *seq, struct sctp_associa
...
@@ -149,17 +160,54 @@ static void sctp_seq_dump_remote_addrs(struct seq_file *seq, struct sctp_associa
{
{
struct
list_head
*
pos
;
struct
list_head
*
pos
;
struct
sctp_transport
*
transport
;
struct
sctp_transport
*
transport
;
union
sctp_addr
*
addr
;
union
sctp_addr
*
addr
,
*
primary
;
struct
sctp_af
*
af
;
struct
sctp_af
*
af
;
primary
=
&
(
assoc
->
peer
.
primary_addr
);
list_for_each
(
pos
,
&
assoc
->
peer
.
transport_addr_list
)
{
list_for_each
(
pos
,
&
assoc
->
peer
.
transport_addr_list
)
{
transport
=
list_entry
(
pos
,
struct
sctp_transport
,
transports
);
transport
=
list_entry
(
pos
,
struct
sctp_transport
,
transports
);
addr
=
(
union
sctp_addr
*
)
&
transport
->
ipaddr
;
addr
=
(
union
sctp_addr
*
)
&
transport
->
ipaddr
;
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
af
=
sctp_get_af_specific
(
addr
->
sa
.
sa_family
);
if
(
af
->
cmp_addr
(
addr
,
primary
))
{
seq_printf
(
seq
,
"*"
);
}
af
->
seq_dump_addr
(
seq
,
addr
);
af
->
seq_dump_addr
(
seq
,
addr
);
}
}
}
}
static
void
*
sctp_eps_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
if
(
*
pos
>
sctp_ep_hashsize
)
return
NULL
;
if
(
*
pos
<
0
)
*
pos
=
0
;
if
(
*
pos
==
0
)
seq_printf
(
seq
,
" ENDPT SOCK STY SST HBKT LPORT UID INODE LADDRS
\n
"
);
++*
pos
;
return
(
void
*
)
pos
;
}
static
void
sctp_eps_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
return
;
}
static
void
*
sctp_eps_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
{
if
(
*
pos
>
sctp_ep_hashsize
)
return
NULL
;
++*
pos
;
return
pos
;
}
/* Display sctp endpoints (/proc/net/sctp/eps). */
/* Display sctp endpoints (/proc/net/sctp/eps). */
static
int
sctp_eps_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
static
int
sctp_eps_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
{
...
@@ -167,38 +215,50 @@ static int sctp_eps_seq_show(struct seq_file *seq, void *v)
...
@@ -167,38 +215,50 @@ static int sctp_eps_seq_show(struct seq_file *seq, void *v)
struct
sctp_ep_common
*
epb
;
struct
sctp_ep_common
*
epb
;
struct
sctp_endpoint
*
ep
;
struct
sctp_endpoint
*
ep
;
struct
sock
*
sk
;
struct
sock
*
sk
;
int
hash
;
int
hash
=
*
(
int
*
)
v
;
seq_printf
(
seq
,
" ENDPT SOCK STY SST HBKT LPORT LADDRS
\n
"
);
if
(
hash
>
sctp_ep_hashsize
)
for
(
hash
=
0
;
hash
<
sctp_ep_hashsize
;
hash
++
)
{
return
-
ENOMEM
;
head
=
&
sctp_ep_hashtable
[
hash
];
read_lock
(
&
head
->
lock
);
head
=
&
sctp_ep_hashtable
[
hash
-
1
];
for
(
epb
=
head
->
chain
;
epb
;
epb
=
epb
->
next
)
{
sctp_local_bh_disable
();
ep
=
sctp_ep
(
epb
);
read_lock
(
&
head
->
lock
);
sk
=
epb
->
sk
;
for
(
epb
=
head
->
chain
;
epb
;
epb
=
epb
->
next
)
{
seq_printf
(
seq
,
"%8p %8p %-3d %-3d %-4d %-5d "
,
ep
,
sk
,
ep
=
sctp_ep
(
epb
);
sctp_sk
(
sk
)
->
type
,
sk
->
sk_state
,
hash
,
sk
=
epb
->
sk
;
epb
->
bind_addr
.
port
);
seq_printf
(
seq
,
"%8p %8p %-3d %-3d %-4d %-5d %5d %5lu "
,
ep
,
sk
,
sctp_seq_dump_local_addrs
(
seq
,
epb
);
sctp_sk
(
sk
)
->
type
,
sk
->
sk_state
,
hash
-
1
,
seq_printf
(
seq
,
"
\n
"
);
epb
->
bind_addr
.
port
,
}
sock_i_uid
(
sk
),
sock_i_ino
(
sk
));
read_unlock
(
&
head
->
lock
);
sctp_seq_dump_local_addrs
(
seq
,
epb
);
seq_printf
(
seq
,
"
\n
"
);
}
}
read_unlock
(
&
head
->
lock
);
sctp_local_bh_enable
();
return
0
;
return
0
;
}
}
static
struct
seq_operations
sctp_eps_ops
=
{
.
start
=
sctp_eps_seq_start
,
.
next
=
sctp_eps_seq_next
,
.
stop
=
sctp_eps_seq_stop
,
.
show
=
sctp_eps_seq_show
,
};
/* Initialize the seq file operations for 'eps' object. */
/* Initialize the seq file operations for 'eps' object. */
static
int
sctp_eps_seq_open
(
struct
inode
*
inode
,
struct
file
*
file
)
static
int
sctp_eps_seq_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
return
s
ingle_open
(
file
,
sctp_eps_seq_show
,
NULL
);
return
s
eq_open
(
file
,
&
sctp_eps_ops
);
}
}
static
struct
file_operations
sctp_eps_seq_fops
=
{
static
struct
file_operations
sctp_eps_seq_fops
=
{
.
open
=
sctp_eps_seq_open
,
.
open
=
sctp_eps_seq_open
,
.
read
=
seq_read
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
llseek
=
seq_lseek
,
.
release
=
s
ingle
_release
,
.
release
=
s
eq
_release
,
};
};
/* Set up the proc fs entry for 'eps' object. */
/* Set up the proc fs entry for 'eps' object. */
...
@@ -221,6 +281,40 @@ void sctp_eps_proc_exit(void)
...
@@ -221,6 +281,40 @@ void sctp_eps_proc_exit(void)
remove_proc_entry
(
"eps"
,
proc_net_sctp
);
remove_proc_entry
(
"eps"
,
proc_net_sctp
);
}
}
static
void
*
sctp_assocs_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
if
(
*
pos
>
sctp_assoc_hashsize
)
return
NULL
;
if
(
*
pos
<
0
)
*
pos
=
0
;
if
(
*
pos
==
0
)
seq_printf
(
seq
,
" ASSOC SOCK STY SST ST HBKT ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT "
"RPORT LADDRS <-> RADDRS
\n
"
);
++*
pos
;
return
(
void
*
)
pos
;
}
static
void
sctp_assocs_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
return
;
}
static
void
*
sctp_assocs_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
{
if
(
*
pos
>
sctp_assoc_hashsize
)
return
NULL
;
++*
pos
;
return
pos
;
}
/* Display sctp associations (/proc/net/sctp/assocs). */
/* Display sctp associations (/proc/net/sctp/assocs). */
static
int
sctp_assocs_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
static
int
sctp_assocs_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
{
...
@@ -228,43 +322,57 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
...
@@ -228,43 +322,57 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
struct
sctp_ep_common
*
epb
;
struct
sctp_ep_common
*
epb
;
struct
sctp_association
*
assoc
;
struct
sctp_association
*
assoc
;
struct
sock
*
sk
;
struct
sock
*
sk
;
int
hash
;
int
hash
=
*
(
int
*
)
v
;
seq_printf
(
seq
,
" ASSOC SOCK STY SST ST HBKT LPORT RPORT "
if
(
hash
>
sctp_assoc_hashsize
)
"LADDRS <-> RADDRS
\n
"
);
return
-
ENOMEM
;
for
(
hash
=
0
;
hash
<
sctp_assoc_hashsize
;
hash
++
)
{
head
=
&
sctp_assoc_hashtable
[
hash
];
head
=
&
sctp_assoc_hashtable
[
hash
-
1
];
read_lock
(
&
head
->
lock
);
sctp_local_bh_disable
();
for
(
epb
=
head
->
chain
;
epb
;
epb
=
epb
->
next
)
{
read_lock
(
&
head
->
lock
);
assoc
=
sctp_assoc
(
epb
);
for
(
epb
=
head
->
chain
;
epb
;
epb
=
epb
->
next
)
{
sk
=
epb
->
sk
;
assoc
=
sctp_assoc
(
epb
);
seq_printf
(
seq
,
sk
=
epb
->
sk
;
"%8p %8p %-3d %-3d %-2d %-4d %-5d %-5d "
,
seq_printf
(
seq
,
assoc
,
sk
,
sctp_sk
(
sk
)
->
type
,
sk
->
sk_state
,
"%8p %8p %-3d %-3d %-2d %-4d %4d %8d %8d %7d %5lu %-5d %5d "
,
assoc
->
state
,
hash
,
epb
->
bind_addr
.
port
,
assoc
,
sk
,
sctp_sk
(
sk
)
->
type
,
sk
->
sk_state
,
assoc
->
peer
.
port
);
assoc
->
state
,
hash
-
1
,
assoc
->
assoc_id
,
sctp_seq_dump_local_addrs
(
seq
,
epb
);
(
sk
->
sk_rcvbuf
-
assoc
->
rwnd
),
seq_printf
(
seq
,
"<-> "
);
assoc
->
sndbuf_used
,
sctp_seq_dump_remote_addrs
(
seq
,
assoc
);
sock_i_uid
(
sk
),
sock_i_ino
(
sk
),
seq_printf
(
seq
,
"
\n
"
);
epb
->
bind_addr
.
port
,
}
assoc
->
peer
.
port
);
read_unlock
(
&
head
->
lock
);
seq_printf
(
seq
,
" "
);
sctp_seq_dump_local_addrs
(
seq
,
epb
);
seq_printf
(
seq
,
"<-> "
);
sctp_seq_dump_remote_addrs
(
seq
,
assoc
);
seq_printf
(
seq
,
"
\n
"
);
}
}
read_unlock
(
&
head
->
lock
);
sctp_local_bh_enable
();
return
0
;
return
0
;
}
}
static
struct
seq_operations
sctp_assoc_ops
=
{
.
start
=
sctp_assocs_seq_start
,
.
next
=
sctp_assocs_seq_next
,
.
stop
=
sctp_assocs_seq_stop
,
.
show
=
sctp_assocs_seq_show
,
};
/* Initialize the seq file operations for 'assocs' object. */
/* Initialize the seq file operations for 'assocs' object. */
static
int
sctp_assocs_seq_open
(
struct
inode
*
inode
,
struct
file
*
file
)
static
int
sctp_assocs_seq_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
return
s
ingle_open
(
file
,
sctp_assocs_seq_show
,
NULL
);
return
s
eq_open
(
file
,
&
sctp_assoc_ops
);
}
}
static
struct
file_operations
sctp_assocs_seq_fops
=
{
static
struct
file_operations
sctp_assocs_seq_fops
=
{
.
open
=
sctp_assocs_seq_open
,
.
open
=
sctp_assocs_seq_open
,
.
read
=
seq_read
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
llseek
=
seq_lseek
,
.
release
=
s
ingle
_release
,
.
release
=
s
eq
_release
,
};
};
/* Set up the proc fs entry for 'assocs' object. */
/* Set up the proc fs entry for 'assocs' object. */
...
...
net/sctp/protocol.c
View file @
814d8ffd
...
@@ -378,10 +378,13 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp)
...
@@ -378,10 +378,13 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp)
{
{
int
ret
=
inet_addr_type
(
addr
->
v4
.
sin_addr
.
s_addr
);
int
ret
=
inet_addr_type
(
addr
->
v4
.
sin_addr
.
s_addr
);
/* FIXME: ip_nonlocal_bind sysctl support. */
if
(
addr
->
v4
.
sin_addr
.
s_addr
!=
INADDR_ANY
&&
ret
!=
RTN_LOCAL
)
if
(
addr
->
v4
.
sin_addr
.
s_addr
!=
INADDR_ANY
&&
ret
!=
RTN_LOCAL
&&
!
sp
->
inet
.
freebind
&&
!
sysctl_ip_nonlocal_bind
)
return
0
;
return
0
;
return
1
;
return
1
;
}
}
...
...
net/sctp/socket.c
View file @
814d8ffd
...
@@ -4686,6 +4686,7 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
...
@@ -4686,6 +4686,7 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
struct
sctp_endpoint
*
newep
=
newsp
->
ep
;
struct
sctp_endpoint
*
newep
=
newsp
->
ep
;
struct
sk_buff
*
skb
,
*
tmp
;
struct
sk_buff
*
skb
,
*
tmp
;
struct
sctp_ulpevent
*
event
;
struct
sctp_ulpevent
*
event
;
int
flags
=
0
;
/* Migrate socket buffer sizes and all the socket level options to the
/* Migrate socket buffer sizes and all the socket level options to the
* new socket.
* new socket.
...
@@ -4707,6 +4708,17 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
...
@@ -4707,6 +4708,17 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
sctp_sk
(
newsk
)
->
bind_hash
=
pp
;
sctp_sk
(
newsk
)
->
bind_hash
=
pp
;
inet_sk
(
newsk
)
->
num
=
inet_sk
(
oldsk
)
->
num
;
inet_sk
(
newsk
)
->
num
=
inet_sk
(
oldsk
)
->
num
;
/* Copy the bind_addr list from the original endpoint to the new
* endpoint so that we can handle restarts properly
*/
if
(
assoc
->
peer
.
ipv4_address
)
flags
|=
SCTP_ADDR4_PEERSUPP
;
if
(
assoc
->
peer
.
ipv6_address
)
flags
|=
SCTP_ADDR6_PEERSUPP
;
sctp_bind_addr_copy
(
&
newsp
->
ep
->
base
.
bind_addr
,
&
oldsp
->
ep
->
base
.
bind_addr
,
SCTP_SCOPE_GLOBAL
,
GFP_KERNEL
,
flags
);
/* Move any messages in the old socket's receive queue that are for the
/* Move any messages in the old socket's receive queue that are for the
* peeled off association to the new socket's receive queue.
* peeled off association to the new socket's receive queue.
*/
*/
...
...
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