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
081fc6c7
Commit
081fc6c7
authored
Sep 11, 2003
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge davem@nuts.ninka.net:/disk1/davem/BK/net-2.5
into kernel.bkbits.net:/home/davem/net-2.5
parents
36f1b589
ee2dea7d
Changes
39
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
987 additions
and
716 deletions
+987
-716
crypto/proc.c
crypto/proc.c
+8
-0
include/linux/atmclip.h
include/linux/atmclip.h
+0
-4
net/atm/br2684.c
net/atm/br2684.c
+4
-3
net/atm/clip.c
net/atm/clip.c
+7
-0
net/atm/ipcommon.c
net/atm/ipcommon.c
+0
-10
net/atm/proc.c
net/atm/proc.c
+736
-424
net/atm/resources.c
net/atm/resources.c
+30
-1
net/atm/resources.h
net/atm/resources.h
+5
-0
net/bluetooth/af_bluetooth.c
net/bluetooth/af_bluetooth.c
+0
-1
net/bluetooth/bnep/sock.c
net/bluetooth/bnep/sock.c
+3
-0
net/bluetooth/hci_sock.c
net/bluetooth/hci_sock.c
+2
-0
net/bridge/br_forward.c
net/bridge/br_forward.c
+1
-0
net/core/dev.c
net/core/dev.c
+4
-10
net/ipv4/arp.c
net/ipv4/arp.c
+3
-8
net/ipv4/fib_hash.c
net/ipv4/fib_hash.c
+4
-10
net/ipv4/icmp.c
net/ipv4/icmp.c
+1
-1
net/ipv4/igmp.c
net/ipv4/igmp.c
+4
-11
net/ipv4/ip_input.c
net/ipv4/ip_input.c
+1
-0
net/ipv4/netfilter/ip_nat_tftp.c
net/ipv4/netfilter/ip_nat_tftp.c
+1
-1
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv4/netfilter/ipt_MASQUERADE.c
+14
-40
net/ipv4/netfilter/ipt_REJECT.c
net/ipv4/netfilter/ipt_REJECT.c
+14
-24
net/ipv4/proc.c
net/ipv4/proc.c
+5
-12
net/ipv4/raw.c
net/ipv4/raw.c
+5
-11
net/ipv4/route.c
net/ipv4/route.c
+1
-1
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_ipv4.c
+11
-8
net/ipv4/udp.c
net/ipv4/udp.c
+4
-5
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+42
-54
net/ipv6/anycast.c
net/ipv6/anycast.c
+3
-5
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_flowlabel.c
+2
-7
net/ipv6/mcast.c
net/ipv6/mcast.c
+5
-11
net/ipv6/proc.c
net/ipv6/proc.c
+32
-19
net/ipv6/raw.c
net/ipv6/raw.c
+2
-6
net/ipv6/tcp_ipv6.c
net/ipv6/tcp_ipv6.c
+2
-0
net/sched/estimator.c
net/sched/estimator.c
+0
-1
net/sched/police.c
net/sched/police.c
+0
-1
net/sched/sch_api.c
net/sched/sch_api.c
+17
-18
net/sched/sch_atm.c
net/sched/sch_atm.c
+11
-5
net/sched/sch_htb.c
net/sched/sch_htb.c
+0
-1
net/xfrm/xfrm_user.c
net/xfrm/xfrm_user.c
+3
-3
No files found.
crypto/proc.c
View file @
081fc6c7
...
...
@@ -57,6 +57,7 @@ static int c_show(struct seq_file *m, void *p)
switch
(
alg
->
cra_flags
&
CRYPTO_ALG_TYPE_MASK
)
{
case
CRYPTO_ALG_TYPE_CIPHER
:
seq_printf
(
m
,
"type : cipher
\n
"
);
seq_printf
(
m
,
"blocksize : %u
\n
"
,
alg
->
cra_blocksize
);
seq_printf
(
m
,
"min keysize : %u
\n
"
,
alg
->
cra_cipher
.
cia_min_keysize
);
...
...
@@ -65,10 +66,17 @@ static int c_show(struct seq_file *m, void *p)
break
;
case
CRYPTO_ALG_TYPE_DIGEST
:
seq_printf
(
m
,
"type : digest
\n
"
);
seq_printf
(
m
,
"blocksize : %u
\n
"
,
alg
->
cra_blocksize
);
seq_printf
(
m
,
"digestsize : %u
\n
"
,
alg
->
cra_digest
.
dia_digestsize
);
break
;
case
CRYPTO_ALG_TYPE_COMPRESS
:
seq_printf
(
m
,
"type : compression
\n
"
);
break
;
default:
seq_printf
(
m
,
"type : unknown
\n
"
);
break
;
}
seq_putc
(
m
,
'\n'
);
...
...
include/linux/atmclip.h
View file @
081fc6c7
...
...
@@ -18,8 +18,4 @@
#define SIOCMKCLIP _IO('a',ATMIOC_CLIP)
/* create IP interface */
#ifdef __KERNEL__
extern
const
unsigned
char
llc_oui
[
6
];
#endif
#endif
net/atm/br2684.c
View file @
081fc6c7
...
...
@@ -732,9 +732,10 @@ static int br2684_seq_show(struct seq_file *seq, void *v)
#ifdef CONFIG_ATM_BR2684_IPFILTER
#define b1(var, byte) ((u8 *) &brvcc->filter.var)[byte]
#define bs(var) b1(var, 0), b1(var, 1), b1(var, 2), b1(var, 3)
if
(
brvcc
->
filter
.
netmask
!=
0
&&
pos
--
==
0
)
return
sprintf
(
buf
,
" filter=%d.%d.%d.%d/"
"%d.%d.%d.%d
\n
"
,
bs
(
prefix
),
bs
(
netmask
));
if
(
brvcc
->
filter
.
netmask
!=
0
)
seq_printf
(
seq
,
" filter=%d.%d.%d.%d/"
"%d.%d.%d.%d
\n
"
,
bs
(
prefix
),
bs
(
netmask
));
#undef bs
#undef b1
#endif
/* CONFIG_ATM_BR2684_IPFILTER */
...
...
net/atm/clip.c
View file @
081fc6c7
...
...
@@ -189,6 +189,13 @@ static int clip_arp_rcv(struct sk_buff *skb)
return
0
;
}
static
const
unsigned
char
llc_oui
[]
=
{
0xaa
,
/* DSAP: non-ISO */
0xaa
,
/* SSAP: non-ISO */
0x03
,
/* Ctrl: Unnumbered Information Command PDU */
0x00
,
/* OUI: EtherType */
0x00
,
0x00
};
static
void
clip_push
(
struct
atm_vcc
*
vcc
,
struct
sk_buff
*
skb
)
{
...
...
net/atm/ipcommon.c
View file @
081fc6c7
...
...
@@ -22,15 +22,6 @@
#endif
const
unsigned
char
llc_oui
[]
=
{
0xaa
,
/* DSAP: non-ISO */
0xaa
,
/* SSAP: non-ISO */
0x03
,
/* Ctrl: Unnumbered Information Command PDU */
0x00
,
/* OUI: EtherType */
0x00
,
0x00
};
/*
* skb_migrate appends the list at "from" to "to", emptying "from" in the
* process. skb_migrate is atomic with respect to all other skb operations on
...
...
@@ -67,5 +58,4 @@ void skb_migrate(struct sk_buff_head *from,struct sk_buff_head *to)
}
EXPORT_SYMBOL
(
llc_oui
);
EXPORT_SYMBOL
(
skb_migrate
);
net/atm/proc.c
View file @
081fc6c7
This diff is collapsed.
Click to expand it.
net/atm/resources.c
View file @
081fc6c7
...
...
@@ -30,7 +30,7 @@ static struct atm_dev *__alloc_atm_dev(const char *type)
{
struct
atm_dev
*
dev
;
dev
=
kmalloc
(
sizeof
(
*
dev
),
GFP_
ATOMIC
);
dev
=
kmalloc
(
sizeof
(
*
dev
),
GFP_
KERNEL
);
if
(
!
dev
)
return
NULL
;
memset
(
dev
,
0
,
sizeof
(
*
dev
));
...
...
@@ -395,6 +395,35 @@ int atm_dev_ioctl(unsigned int cmd, unsigned long arg)
return
error
;
}
static
__inline__
void
*
dev_get_idx
(
loff_t
left
)
{
struct
list_head
*
p
;
list_for_each
(
p
,
&
atm_devs
)
{
if
(
!--
left
)
break
;
}
return
(
p
!=
&
atm_devs
)
?
p
:
NULL
;
}
void
*
atm_dev_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
spin_lock
(
&
atm_dev_lock
);
return
*
pos
?
dev_get_idx
(
*
pos
)
:
(
void
*
)
1
;
}
void
atm_dev_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
spin_unlock
(
&
atm_dev_lock
);
}
void
*
atm_dev_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
{
++*
pos
;
v
=
(
v
==
(
void
*
)
1
)
?
atm_devs
.
next
:
((
struct
list_head
*
)
v
)
->
next
;
return
(
v
==
&
atm_devs
)
?
NULL
:
v
;
}
EXPORT_SYMBOL
(
atm_dev_register
);
EXPORT_SYMBOL
(
atm_dev_deregister
);
...
...
net/atm/resources.h
View file @
081fc6c7
...
...
@@ -21,6 +21,11 @@ int atm_dev_ioctl(unsigned int cmd, unsigned long arg);
#include <linux/proc_fs.h>
void
*
atm_dev_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
);
void
atm_dev_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
);
void
*
atm_dev_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
);
int
atm_proc_dev_register
(
struct
atm_dev
*
dev
);
void
atm_proc_dev_deregister
(
struct
atm_dev
*
dev
);
...
...
net/bluetooth/af_bluetooth.c
View file @
081fc6c7
...
...
@@ -130,7 +130,6 @@ struct sock *bt_sock_alloc(struct socket *sock, int proto, int pi_size, int prio
}
sock_init_data
(
sock
,
sk
);
sk_set_owner
(
sk
,
THIS_MODULE
);
INIT_LIST_HEAD
(
&
bt_sk
(
sk
)
->
accept_q
);
sk
->
sk_zapped
=
0
;
...
...
net/bluetooth/bnep/sock.c
View file @
081fc6c7
...
...
@@ -175,6 +175,9 @@ static int bnep_sock_create(struct socket *sock, int protocol)
if
(
!
(
sk
=
bt_sock_alloc
(
sock
,
PF_BLUETOOTH
,
0
,
GFP_KERNEL
)))
return
-
ENOMEM
;
sk_set_owner
(
sk
,
THIS_MODULE
);
sock
->
ops
=
&
bnep_sock_ops
;
sock
->
state
=
SS_UNCONNECTED
;
...
...
net/bluetooth/hci_sock.c
View file @
081fc6c7
...
...
@@ -587,6 +587,8 @@ static int hci_sock_create(struct socket *sock, int protocol)
if
(
!
sk
)
return
-
ENOMEM
;
sk_set_owner
(
sk
,
THIS_MODULE
);
sock
->
state
=
SS_UNCONNECTED
;
sk
->
sk_state
=
BT_OPEN
;
...
...
net/bridge/br_forward.c
View file @
081fc6c7
...
...
@@ -69,6 +69,7 @@ static void __br_forward(const struct net_bridge_port *to, struct sk_buff *skb)
indev
=
skb
->
dev
;
skb
->
dev
=
to
->
dev
;
skb
->
ip_summed
=
CHECKSUM_NONE
;
NF_HOOK
(
PF_BRIDGE
,
NF_BR_FORWARD
,
skb
,
indev
,
skb
->
dev
,
br_forward_finish
);
...
...
net/core/dev.c
View file @
081fc6c7
...
...
@@ -1994,26 +1994,21 @@ extern int wireless_proc_init(void);
static
int
__init
dev_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
int
rc
=
-
ENOMEM
;
p
=
create_proc_entry
(
"dev"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"dev"
,
S_IRUGO
,
&
dev_seq_fops
))
goto
out
;
p
->
proc_fops
=
&
dev_seq_fops
;
p
=
create_proc_entry
(
"softnet_stat"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"softnet_stat"
,
S_IRUGO
,
&
softnet_seq_fops
))
goto
out_dev
;
p
->
proc_fops
=
&
softnet_seq_fops
;
if
(
wireless_proc_init
())
goto
out_softnet
;
rc
=
0
;
out:
return
rc
;
out_softnet:
remove_proc_entry
(
"softnet_stat"
,
proc_net
);
proc_net_remove
(
"softnet_stat"
);
out_dev:
remove_proc_entry
(
"dev"
,
proc_net
);
proc_net_remove
(
"dev"
);
goto
out
;
}
#else
...
...
@@ -2759,7 +2754,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule_timeout
(
HZ
/
4
);
current
->
state
=
TASK_RUNNING
;
if
(
time_after
(
jiffies
,
warning_time
+
10
*
HZ
))
{
printk
(
KERN_EMERG
"unregister_netdevice: "
...
...
net/ipv4/arp.c
View file @
081fc6c7
...
...
@@ -1416,14 +1416,9 @@ static struct file_operations arp_seq_fops = {
static
int
__init
arp_proc_init
(
void
)
{
int
rc
=
0
;
struct
proc_dir_entry
*
p
=
create_proc_entry
(
"arp"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
arp_seq_fops
;
else
rc
=
-
ENOMEM
;
return
rc
;
if
(
!
proc_net_fops_create
(
"arp"
,
S_IRUGO
,
&
arp_seq_fops
))
return
-
ENOMEM
;
return
0
;
}
#else
/* CONFIG_PROC_FS */
...
...
net/ipv4/fib_hash.c
View file @
081fc6c7
...
...
@@ -1096,19 +1096,13 @@ static struct file_operations fib_seq_fops = {
int
__init
fib_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
int
rc
=
0
;
p
=
create_proc_entry
(
"route"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
fib_seq_fops
;
else
rc
=
-
ENOMEM
;
return
rc
;
if
(
!
proc_net_fops_create
(
"route"
,
S_IRUGO
,
&
fib_seq_fops
))
return
-
ENOMEM
;
return
0
;
}
void
__init
fib_proc_exit
(
void
)
{
remove_proc_entry
(
"route"
,
proc_net
);
proc_net_remove
(
"route"
);
}
#endif
/* CONFIG_PROC_FS */
net/ipv4/icmp.c
View file @
081fc6c7
...
...
@@ -669,7 +669,7 @@ static void icmp_unreach(struct sk_buff *skb)
printk
(
KERN_WARNING
"%u.%u.%u.%u sent an invalid ICMP "
"type %u, code %u "
"error to a broadcast: %u.%u.%u.%u on %s
\n
"
,
NIPQUAD
(
iph
->
saddr
),
NIPQUAD
(
skb
->
nh
.
iph
->
saddr
),
icmph
->
type
,
icmph
->
code
,
NIPQUAD
(
iph
->
daddr
),
skb
->
dev
->
name
);
...
...
net/ipv4/igmp.c
View file @
081fc6c7
...
...
@@ -2162,7 +2162,7 @@ static struct ip_mc_list *igmp_mc_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
igmp_mc_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
dev_base_lock
);
return
*
pos
?
igmp_mc_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
igmp_mc_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
igmp_mc_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -2337,7 +2337,7 @@ static struct ip_sf_list *igmp_mcf_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
igmp_mcf_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
dev_base_lock
);
return
*
pos
?
igmp_mcf_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
igmp_mcf_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
igmp_mcf_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -2430,15 +2430,8 @@ static struct file_operations igmp_mcf_seq_fops = {
int
__init
igmp_mc_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
p
=
create_proc_entry
(
"igmp"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
igmp_mc_seq_fops
;
p
=
create_proc_entry
(
"mcfilter"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
igmp_mcf_seq_fops
;
proc_net_fops_create
(
"igmp"
,
S_IRUGO
,
&
igmp_mc_seq_fops
);
proc_net_fops_create
(
"mcfilter"
,
S_IRUGO
,
&
igmp_mcf_seq_fops
);
return
0
;
}
#endif
...
...
net/ipv4/ip_input.c
View file @
081fc6c7
...
...
@@ -201,6 +201,7 @@ static inline int ip_local_deliver_finish(struct sk_buff *skb)
#ifdef CONFIG_NETFILTER_DEBUG
nf_debug_ip_local_deliver
(
skb
);
skb
->
nf_debug
=
3
D
0
;
#endif
/*CONFIG_NETFILTER_DEBUG*/
__skb_pull
(
skb
,
ihl
);
...
...
net/ipv4/netfilter/ip_nat_tftp.c
View file @
081fc6c7
...
...
@@ -30,7 +30,7 @@
#include <linux/netfilter_ipv4/ip_nat_rule.h>
MODULE_AUTHOR
(
"Magnus Boden <mb@ozaba.mine.nu>"
);
MODULE_DESCRIPTION
(
"tf
pt
NAT helper"
);
MODULE_DESCRIPTION
(
"tf
tp
NAT helper"
);
MODULE_LICENSE
(
"GPL"
);
#define MAX_PORTS 8
...
...
net/ipv4/netfilter/ipt_MASQUERADE.c
View file @
081fc6c7
...
...
@@ -130,57 +130,35 @@ masquerade_target(struct sk_buff **pskb,
}
static
inline
int
device_cmp
(
const
struct
ip_conntrack
*
i
,
void
*
ifindex
)
device_cmp
(
const
struct
ip_conntrack
*
i
,
void
*
_ina
)
{
int
ret
;
int
ret
=
0
;
struct
in_ifaddr
*
ina
=
_ina
;
READ_LOCK
(
&
masq_lock
);
ret
=
(
i
->
nat
.
masq_index
==
(
int
)(
long
)
ifindex
);
/* If it's masquerading out this interface with a different address,
or we don't know the new address of this interface. */
if
(
i
->
nat
.
masq_index
==
ina
->
ifa_dev
->
dev
->
ifindex
&&
i
->
tuplehash
[
IP_CT_DIR_REPLY
].
tuple
.
dst
.
ip
!=
ina
->
ifa_address
)
ret
=
1
;
READ_UNLOCK
(
&
masq_lock
);
return
ret
;
}
static
int
masq_device_event
(
struct
notifier_block
*
this
,
unsigned
long
event
,
void
*
ptr
)
{
struct
net_device
*
dev
=
ptr
;
if
(
event
==
NETDEV_DOWN
)
{
/* Device was downed. Search entire table for
conntracks which were associated with that device,
and forget them. */
IP_NF_ASSERT
(
dev
->
ifindex
!=
0
);
ip_ct_selective_cleanup
(
device_cmp
,
(
void
*
)(
long
)
dev
->
ifindex
);
}
return
NOTIFY_DONE
;
}
static
int
masq_inet_event
(
struct
notifier_block
*
this
,
unsigned
long
event
,
void
*
ptr
)
{
struct
net_device
*
dev
=
((
struct
in_ifaddr
*
)
ptr
)
->
ifa_dev
->
dev
;
if
(
event
==
NETDEV_DOWN
)
{
/* IP address was deleted. Search entire table for
conntracks which were associated with that device,
and forget them. */
IP_NF_ASSERT
(
dev
->
ifindex
!=
0
);
ip_ct_selective_cleanup
(
device_cmp
,
(
void
*
)(
long
)
dev
->
ifindex
);
}
/* For some configurations, interfaces often come back with
* the same address. If not, clean up old conntrack
* entries. */
if
(
event
==
NETDEV_UP
)
ip_ct_selective_cleanup
(
device_cmp
,
ptr
);
return
NOTIFY_DONE
;
}
static
struct
notifier_block
masq_dev_notifier
=
{
.
notifier_call
=
masq_device_event
,
};
static
struct
notifier_block
masq_inet_notifier
=
{
.
notifier_call
=
masq_inet_event
,
};
...
...
@@ -198,12 +176,9 @@ static int __init init(void)
ret
=
ipt_register_target
(
&
masquerade
);
if
(
ret
==
0
)
{
/* Register for device down reports */
register_netdevice_notifier
(
&
masq_dev_notifier
);
if
(
ret
==
0
)
/* Register IP address change reports */
register_inetaddr_notifier
(
&
masq_inet_notifier
);
}
return
ret
;
}
...
...
@@ -211,7 +186,6 @@ static int __init init(void)
static
void
__exit
fini
(
void
)
{
ipt_unregister_target
(
&
masquerade
);
unregister_netdevice_notifier
(
&
masq_dev_notifier
);
unregister_inetaddr_notifier
(
&
masq_inet_notifier
);
}
...
...
net/ipv4/netfilter/ipt_REJECT.c
View file @
081fc6c7
...
...
@@ -84,45 +84,34 @@ static inline struct rtable *route_reverse(struct sk_buff *skb, int local)
static
void
send_reset
(
struct
sk_buff
*
oldskb
,
int
local
)
{
struct
sk_buff
*
nskb
;
struct
tcphdr
*
otcph
,
*
tcph
;
struct
tcphdr
otcph
,
*
tcph
;
struct
rtable
*
rt
;
unsigned
int
otcplen
;
u_int16_t
tmp_port
;
u_int32_t
tmp_addr
;
int
needs_ack
;
int
hh_len
;
/* IP header checks: fragment, too short. */
if
(
oldskb
->
nh
.
iph
->
frag_off
&
htons
(
IP_OFFSET
)
||
oldskb
->
len
<
(
oldskb
->
nh
.
iph
->
ihl
<<
2
)
+
sizeof
(
struct
tcphdr
))
/* IP header checks: fragment. */
if
(
oldskb
->
nh
.
iph
->
frag_off
&
htons
(
IP_OFFSET
))
return
;
otcph
=
(
struct
tcphdr
*
)((
u_int32_t
*
)
oldskb
->
nh
.
iph
+
oldskb
->
nh
.
iph
->
ihl
);
otcplen
=
oldskb
->
len
-
oldskb
->
nh
.
iph
->
ihl
*
4
;
if
(
skb_copy_bits
(
oldskb
,
oldskb
->
nh
.
iph
->
ihl
*
4
,
otcph
,
sizeof
(
*
otcph
))
<
0
)
&
otcph
,
sizeof
(
otcph
))
<
0
)
return
;
/* No RST for RST. */
if
(
otcph
->
rst
)
return
;
/* Check checksum. */
if
(
tcp_v4_check
(
otcph
,
otcplen
,
oldskb
->
nh
.
iph
->
saddr
,
oldskb
->
nh
.
iph
->
daddr
,
csum_partial
((
char
*
)
otcph
,
otcplen
,
0
))
!=
0
)
if
(
otcph
.
rst
)
return
;
/* FIXME: Check checksum --RR */
if
((
rt
=
route_reverse
(
oldskb
,
local
))
==
NULL
)
return
;
hh_len
=
(
rt
->
u
.
dst
.
dev
->
hard_header_len
+
15
)
&~
15
;
/* Copy skb (even if skb is about to be dropped, we can't just
clone it because there may be other things, such as tcpdump,
interested in it). We also need to expand headroom in case
hh_len of incoming interface < hh_len of outgoing interface */
/* We need a linear, writeable skb. We also need to expand
headroom in case hh_len of incoming interface < hh_len of
outgoing interface */
nskb
=
skb_copy_expand
(
oldskb
,
hh_len
,
skb_tailroom
(
oldskb
),
GFP_ATOMIC
);
if
(
!
nskb
)
{
...
...
@@ -163,12 +152,13 @@ static void send_reset(struct sk_buff *oldskb, int local)
if
(
tcph
->
ack
)
{
needs_ack
=
0
;
tcph
->
seq
=
otcph
->
ack_seq
;
tcph
->
seq
=
otcph
.
ack_seq
;
tcph
->
ack_seq
=
0
;
}
else
{
needs_ack
=
1
;
tcph
->
ack_seq
=
htonl
(
ntohl
(
otcph
->
seq
)
+
otcph
->
syn
+
otcph
->
fin
+
otcplen
-
(
otcph
->
doff
<<
2
));
tcph
->
ack_seq
=
htonl
(
ntohl
(
otcph
.
seq
)
+
otcph
.
syn
+
otcph
.
fin
+
oldskb
->
len
-
oldskb
->
nh
.
iph
->
ihl
*
4
-
(
otcph
.
doff
<<
2
));
tcph
->
seq
=
0
;
}
...
...
net/ipv4/proc.c
View file @
081fc6c7
...
...
@@ -238,28 +238,21 @@ static struct file_operations netstat_seq_fops = {
int
__init
ip_misc_proc_init
(
void
)
{
int
rc
=
0
;
struct
proc_dir_entry
*
p
;
p
=
create_proc_entry
(
"netstat"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"netstat"
,
S_IRUGO
,
&
netstat_seq_fops
))
goto
out_netstat
;
p
->
proc_fops
=
&
netstat_seq_fops
;
p
=
create_proc_entry
(
"snmp"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"snmp"
,
S_IRUGO
,
&
snmp_seq_fops
))
goto
out_snmp
;
p
->
proc_fops
=
&
snmp_seq_fops
;
p
=
create_proc_entry
(
"sockstat"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"sockstat"
,
S_IRUGO
,
&
sockstat_seq_fops
))
goto
out_sockstat
;
p
->
proc_fops
=
&
sockstat_seq_fops
;
out:
return
rc
;
out_sockstat:
remove_proc_entry
(
"snmp"
,
proc_net
);
proc_net_remove
(
"snmp"
);
out_snmp:
remove_proc_entry
(
"netstat"
,
proc_net
);
proc_net_remove
(
"netstat"
);
out_netstat:
rc
=
-
ENOMEM
;
goto
out
;
...
...
net/ipv4/raw.c
View file @
081fc6c7
...
...
@@ -736,7 +736,7 @@ static struct sock *raw_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
raw_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
raw_v4_lock
);
return
*
pos
?
raw_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
raw_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
raw_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -831,19 +831,13 @@ static struct file_operations raw_seq_fops = {
int
__init
raw_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
int
rc
=
0
;
p
=
create_proc_entry
(
"raw"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
raw_seq_fops
;
else
rc
=
-
ENOMEM
;
return
rc
;
if
(
!
proc_net_fops_create
(
"raw"
,
S_IRUGO
,
&
raw_seq_fops
))
return
-
ENOMEM
;
return
0
;
}
void
__init
raw_proc_exit
(
void
)
{
remove_proc_entry
(
"raw"
,
proc_net
);
proc_net_remove
(
"raw"
);
}
#endif
/* CONFIG_PROC_FS */
net/ipv4/route.c
View file @
081fc6c7
...
...
@@ -259,7 +259,7 @@ static struct rtable *rt_cache_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
rt_cache_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
return
*
pos
?
rt_cache_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
rt_cache_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
rt_cache_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
net/ipv4/tcp_ipv4.c
View file @
081fc6c7
...
...
@@ -2413,11 +2413,15 @@ static int tcp_seq_open(struct inode *inode, struct file *file)
{
struct
tcp_seq_afinfo
*
afinfo
=
PDE
(
inode
)
->
data
;
struct
seq_file
*
seq
;
int
rc
=
-
ENOMEM
;
struct
tcp_iter_state
*
s
=
kmalloc
(
sizeof
(
*
s
),
GFP_KERNEL
)
;
struct
tcp_iter_state
*
s
;
int
rc
;
if
(
unlikely
(
afinfo
==
NULL
))
return
-
EINVAL
;
s
=
kmalloc
(
sizeof
(
*
s
),
GFP_KERNEL
);
if
(
!
s
)
goto
out
;
return
-
ENOMEM
;
memset
(
s
,
0
,
sizeof
(
*
s
));
s
->
family
=
afinfo
->
family
;
s
->
seq_ops
.
start
=
tcp_seq_start
;
...
...
@@ -2450,11 +2454,10 @@ int tcp_proc_register(struct tcp_seq_afinfo *afinfo)
afinfo
->
seq_fops
->
llseek
=
seq_lseek
;
afinfo
->
seq_fops
->
release
=
seq_release_private
;
p
=
create_proc_entry
(
afinfo
->
name
,
S_IRUGO
,
proc_net
);
if
(
p
)
{
p
=
proc_net_fops_create
(
afinfo
->
name
,
S_IRUGO
,
afinfo
->
seq_fops
);
if
(
p
)
p
->
data
=
afinfo
;
p
->
proc_fops
=
afinfo
->
seq_fops
;
}
else
else
rc
=
-
ENOMEM
;
return
rc
;
}
...
...
@@ -2463,7 +2466,7 @@ void tcp_proc_unregister(struct tcp_seq_afinfo *afinfo)
{
if
(
!
afinfo
)
return
;
remove_proc_entry
(
afinfo
->
name
,
proc_net
);
proc_net_remove
(
afinfo
->
name
);
memset
(
afinfo
->
seq_fops
,
0
,
sizeof
(
*
afinfo
->
seq_fops
));
}
...
...
net/ipv4/udp.c
View file @
081fc6c7
...
...
@@ -1460,11 +1460,10 @@ int udp_proc_register(struct udp_seq_afinfo *afinfo)
afinfo
->
seq_fops
->
llseek
=
seq_lseek
;
afinfo
->
seq_fops
->
release
=
seq_release_private
;
p
=
create_proc_entry
(
afinfo
->
name
,
S_IRUGO
,
proc_net
);
if
(
p
)
{
p
=
proc_net_fops_create
(
afinfo
->
name
,
S_IRUGO
,
afinfo
->
seq_fops
);
if
(
p
)
p
->
data
=
afinfo
;
p
->
proc_fops
=
afinfo
->
seq_fops
;
}
else
else
rc
=
-
ENOMEM
;
return
rc
;
}
...
...
@@ -1473,7 +1472,7 @@ void udp_proc_unregister(struct udp_seq_afinfo *afinfo)
{
if
(
!
afinfo
)
return
;
remove_proc_entry
(
afinfo
->
name
,
proc_net
);
proc_net_remove
(
afinfo
->
name
);
memset
(
afinfo
->
seq_fops
,
0
,
sizeof
(
*
afinfo
->
seq_fops
));
}
...
...
net/ipv6/addrconf.c
View file @
081fc6c7
...
...
@@ -2149,59 +2149,65 @@ struct if6_iter_state {
int
bucket
;
};
static
inline
struct
inet6_ifaddr
*
if6_get_bucket
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
static
struct
inet6_ifaddr
*
if6_get_first
(
struct
seq_file
*
seq
)
{
int
i
;
struct
inet6_ifaddr
*
ifa
=
NULL
;
loff_t
l
=
*
pos
;
struct
if6_iter_state
*
state
=
seq
->
private
;
for
(;
state
->
bucket
<
IN6_ADDR_HSIZE
;
++
state
->
bucket
)
for
(
i
=
0
,
ifa
=
inet6_addr_lst
[
state
->
bucket
];
ifa
;
++
i
,
ifa
=
ifa
->
lst_next
)
{
if
(
l
--
)
continue
;
*
pos
=
i
;
goto
out
;
for
(
state
->
bucket
=
0
;
state
->
bucket
<
IN6_ADDR_HSIZE
;
++
state
->
bucket
)
{
ifa
=
inet6_addr_lst
[
state
->
bucket
];
if
(
ifa
)
break
;
}
return
ifa
;
}
static
struct
inet6_ifaddr
*
if6_get_next
(
struct
seq_file
*
seq
,
struct
inet6_ifaddr
*
ifa
)
{
struct
if6_iter_state
*
state
=
seq
->
private
;
ifa
=
ifa
->
lst_next
;
try_again:
if
(
!
ifa
&&
++
state
->
bucket
<
IN6_ADDR_HSIZE
)
{
ifa
=
inet6_addr_lst
[
state
->
bucket
];
goto
try_again
;
}
out:
return
ifa
;
}
static
struct
inet6_ifaddr
*
if6_get_idx
(
struct
seq_file
*
seq
,
loff_t
pos
)
{
struct
inet6_ifaddr
*
ifa
=
if6_get_first
(
seq
);
if
(
ifa
)
while
(
pos
&&
(
ifa
=
if6_get_next
(
seq
,
ifa
))
!=
NULL
)
--
pos
;
return
pos
?
NULL
:
ifa
;
}
static
void
*
if6_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock_bh
(
&
addrconf_hash_lock
);
return
*
pos
?
if6_get_bucket
(
seq
,
pos
)
:
SEQ_START_TOKEN
;
return
if6_get_idx
(
seq
,
*
pos
)
;
}
static
void
*
if6_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
{
struct
inet6_ifaddr
*
ifa
;
struct
if6_iter_state
*
state
;
if
(
v
==
SEQ_START_TOKEN
)
{
ifa
=
if6_get_bucket
(
seq
,
pos
);
goto
out
;
}
state
=
seq
->
private
;
ifa
=
v
;
ifa
=
ifa
->
lst_next
;
if
(
ifa
)
goto
out
;
if
(
++
state
->
bucket
>=
IN6_ADDR_HSIZE
)
goto
out
;
*
pos
=
0
;
ifa
=
if6_get_bucket
(
seq
,
pos
);
out:
ifa
=
if6_get_next
(
seq
,
v
);
++*
pos
;
return
ifa
;
}
static
inline
void
if6_iface_seq_show
(
struct
seq_file
*
seq
,
struct
inet6_ifaddr
*
ifp
)
static
void
if6_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
read_unlock_bh
(
&
addrconf_hash_lock
);
}
static
int
if6_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
struct
inet6_ifaddr
*
ifp
=
(
struct
inet6_ifaddr
*
)
v
;
seq_printf
(
seq
,
"%04x%04x%04x%04x%04x%04x%04x%04x %02x %02x %02x %02x %8s
\n
"
,
NIP6
(
ifp
->
addr
),
...
...
@@ -2210,22 +2216,9 @@ static inline void if6_iface_seq_show(struct seq_file *seq, struct inet6_ifaddr
ifp
->
scope
,
ifp
->
flags
,
ifp
->
idev
->
dev
->
name
);
}
static
int
if6_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
if
(
v
==
SEQ_START_TOKEN
)
return
0
;
else
if6_iface_seq_show
(
seq
,
v
);
return
0
;
}
static
void
if6_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
read_unlock_bh
(
&
addrconf_hash_lock
);
}
static
struct
seq_operations
if6_seq_ops
=
{
.
start
=
if6_seq_start
,
.
next
=
if6_seq_next
,
...
...
@@ -2266,16 +2259,11 @@ static struct file_operations if6_fops = {
int
__init
if6_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
int
rc
=
0
;
p
=
create_proc_entry
(
"if_inet6"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
if6_fops
;
else
rc
=
-
ENOMEM
;
return
rc
;
if
(
!
proc_net_fops_create
(
"if_inet6"
,
S_IRUGO
,
&
if6_fops
))
return
-
ENOMEM
;
return
0
;
}
void
if6_proc_exit
(
void
)
{
proc_net_remove
(
"if_inet6"
);
...
...
net/ipv6/anycast.c
View file @
081fc6c7
...
...
@@ -505,7 +505,7 @@ static struct ifacaddr6 *ac6_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
ac6_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
dev_base_lock
);
return
*
pos
?
ac6_get_idx
(
seq
,
*
pos
)
:
ac6_get_first
(
seq
);
return
ac6_get_idx
(
seq
,
*
pos
);
}
static
void
*
ac6_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -581,11 +581,9 @@ static struct file_operations ac6_seq_fops = {
int
__init
ac6_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
;
if
(
!
proc_net_fops_create
(
"anycast6"
,
S_IRUGO
,
&
ac6_seq_fops
))
return
-
ENOMEM
;
p
=
create_proc_entry
(
"anycast6"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
ac6_seq_fops
;
return
0
;
}
...
...
net/ipv6/ip6_flowlabel.c
View file @
081fc6c7
...
...
@@ -603,7 +603,7 @@ static struct ip6_flowlabel *ip6fl_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
ip6fl_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock_bh
(
&
ip6_fl_lock
);
return
*
pos
?
ip6fl_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
ip6fl_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
ip6fl_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -695,12 +695,7 @@ static struct file_operations ip6fl_seq_fops = {
void
ip6_flowlabel_init
()
{
#ifdef CONFIG_PROC_FS
struct
proc_dir_entry
*
p
;
#endif
#ifdef CONFIG_PROC_FS
p
=
create_proc_entry
(
"ip6_flowlabel"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
ip6fl_seq_fops
;
proc_net_fops_create
(
"ip6_flowlabel"
,
S_IRUGO
,
&
ip6fl_seq_fops
);
#endif
}
...
...
net/ipv6/mcast.c
View file @
081fc6c7
...
...
@@ -2119,7 +2119,7 @@ static struct ifmcaddr6 *igmp6_mc_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
igmp6_mc_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
dev_base_lock
);
return
*
pos
?
igmp6_mc_get_idx
(
seq
,
*
pos
)
:
igmp6_mc_get_first
(
seq
);
return
igmp6_mc_get_idx
(
seq
,
*
pos
);
}
static
void
*
igmp6_mc_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -2278,7 +2278,7 @@ static struct ip6_sf_list *igmp6_mcf_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
igmp6_mcf_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
dev_base_lock
);
return
*
pos
?
igmp6_mcf_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
igmp6_mcf_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
igmp6_mcf_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -2378,9 +2378,6 @@ int __init igmp6_init(struct net_proto_family *ops)
struct
ipv6_pinfo
*
np
;
struct
sock
*
sk
;
int
err
;
#ifdef CONFIG_PROC_FS
struct
proc_dir_entry
*
p
;
#endif
err
=
sock_create
(
PF_INET6
,
SOCK_RAW
,
IPPROTO_ICMPV6
,
&
igmp6_socket
);
if
(
err
<
0
)
{
...
...
@@ -2399,12 +2396,8 @@ int __init igmp6_init(struct net_proto_family *ops)
np
->
hop_limit
=
1
;
#ifdef CONFIG_PROC_FS
p
=
create_proc_entry
(
"igmp6"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
igmp6_mc_seq_fops
;
p
=
create_proc_entry
(
"mcfilter6"
,
S_IRUGO
,
proc_net
);
if
(
p
)
p
->
proc_fops
=
&
igmp6_mcf_seq_fops
;
proc_net_fops_create
(
"igmp6"
,
S_IRUGO
,
&
igmp6_mc_seq_fops
);
proc_net_fops_create
(
"mcfilter6"
,
S_IRUGO
,
&
igmp6_mcf_seq_fops
);
#endif
return
0
;
...
...
@@ -2414,6 +2407,7 @@ void igmp6_cleanup(void)
{
sock_release
(
igmp6_socket
);
igmp6_socket
=
NULL
;
/* for safety */
#ifdef CONFIG_PROC_FS
proc_net_remove
(
"mcfilter6"
);
proc_net_remove
(
"igmp6"
);
...
...
net/ipv6/proc.c
View file @
081fc6c7
...
...
@@ -32,7 +32,6 @@
#ifdef CONFIG_PROC_FS
static
struct
proc_dir_entry
*
proc_net_devsnmp6
;
#endif
static
int
fold_prot_inuse
(
struct
proto
*
proto
)
{
...
...
@@ -58,7 +57,6 @@ static int sockstat6_seq_show(struct seq_file *seq, void *v)
return
0
;
}
struct
snmp6_item
{
char
*
name
;
...
...
@@ -221,9 +219,7 @@ static struct file_operations snmp6_seq_fops = {
int
snmp6_register_dev
(
struct
inet6_dev
*
idev
)
{
int
err
=
-
ENOMEM
;
#ifdef CONFIG_PROC_FS
struct
proc_dir_entry
*
p
;
#endif
if
(
!
idev
||
!
idev
->
dev
)
return
-
EINVAL
;
...
...
@@ -232,7 +228,6 @@ int snmp6_register_dev(struct inet6_dev *idev)
__alignof__
(
struct
icmpv6_mib
))
<
0
)
goto
err_icmp
;
#ifdef CONFIG_PROC_FS
if
(
!
proc_net_devsnmp6
)
{
err
=
-
ENOENT
;
goto
err_proc
;
...
...
@@ -244,27 +239,22 @@ int snmp6_register_dev(struct inet6_dev *idev)
p
->
proc_fops
=
&
snmp6_seq_fops
;
idev
->
stats
.
proc_dir_entry
=
p
;
#endif
return
0
;
#ifdef CONFIG_PROC_FS
err_proc:
snmp6_mib_free
((
void
**
)
idev
->
stats
.
icmpv6
);
#endif
err_icmp:
return
err
;
}
int
snmp6_unregister_dev
(
struct
inet6_dev
*
idev
)
{
#ifdef CONFIG_PROC_FS
if
(
!
proc_net_devsnmp6
)
return
-
ENOENT
;
if
(
!
idev
||
!
idev
->
stats
.
proc_dir_entry
)
return
-
EINVAL
;
remove_proc_entry
(
idev
->
stats
.
proc_dir_entry
->
name
,
proc_net_devsnmp6
);
#endif
snmp6_mib_free
((
void
**
)
idev
->
stats
.
icmpv6
);
return
0
;
...
...
@@ -273,21 +263,16 @@ int snmp6_unregister_dev(struct inet6_dev *idev)
int
__init
ipv6_misc_proc_init
(
void
)
{
int
rc
=
0
;
struct
proc_dir_entry
*
p
;
p
=
create_proc_entry
(
"snmp6"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"snmp6"
,
S_IRUGO
,
&
snmp6_seq_fops
))
goto
proc_snmp6_fail
;
else
p
->
proc_fops
=
&
snmp6_seq_fops
;
proc_net_devsnmp6
=
proc_mkdir
(
"dev_snmp6"
,
proc_net
);
if
(
!
proc_net_devsnmp6
)
goto
proc_dev_snmp6_fail
;
p
=
create_proc_entry
(
"sockstat6"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
p
roc_net_fops_create
(
"sockstat6"
,
S_IRUGO
,
&
sockstat6_seq_fops
)
)
goto
proc_sockstat6_fail
;
else
p
->
proc_fops
=
&
sockstat6_seq_fops
;
out:
return
rc
;
...
...
@@ -307,3 +292,31 @@ void ipv6_misc_proc_exit(void)
proc_net_remove
(
"snmp6"
);
}
#else
/* CONFIG_PROC_FS */
int
snmp6_register_dev
(
struct
inet6_dev
*
idev
)
{
int
err
=
-
ENOMEM
;
if
(
!
idev
||
!
idev
->
dev
)
return
-
EINVAL
;
if
(
snmp6_mib_init
((
void
**
)
idev
->
stats
.
icmpv6
,
sizeof
(
struct
icmpv6_mib
),
__alignof__
(
struct
icmpv6_mib
))
<
0
)
goto
err_icmp
;
return
0
;
err_icmp:
return
err
;
}
int
snmp6_unregister_dev
(
struct
inet6_dev
*
idev
)
{
snmp6_mib_free
((
void
**
)
idev
->
stats
.
icmpv6
);
return
0
;
}
#endif
net/ipv6/raw.c
View file @
081fc6c7
...
...
@@ -961,7 +961,7 @@ static struct sock *raw6_get_idx(struct seq_file *seq, loff_t pos)
static
void
*
raw6_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
read_lock
(
&
raw_v6_lock
);
return
*
pos
?
raw6_get_idx
(
seq
,
*
pos
)
:
SEQ_START_TOKEN
;
return
*
pos
?
raw6_get_idx
(
seq
,
*
pos
-
1
)
:
SEQ_START_TOKEN
;
}
static
void
*
raw6_seq_next
(
struct
seq_file
*
seq
,
void
*
v
,
loff_t
*
pos
)
...
...
@@ -1059,12 +1059,8 @@ static struct file_operations raw6_seq_fops = {
int
__init
raw6_proc_init
(
void
)
{
struct
proc_dir_entry
*
p
=
create_proc_entry
(
"raw6"
,
S_IRUGO
,
proc_net
);
if
(
!
p
)
if
(
!
proc_net_fops_create
(
"raw6"
,
S_IRUGO
,
&
raw6_seq_fops
))
return
-
ENOMEM
;
p
->
proc_fops
=
&
raw6_seq_fops
;
return
0
;
}
...
...
net/ipv6/tcp_ipv6.c
View file @
081fc6c7
...
...
@@ -2023,6 +2023,7 @@ static void get_timewait6_sock(struct seq_file *seq,
atomic_read
(
&
tw
->
tw_refcnt
),
tw
);
}
#ifdef CONFIG_PROC_FS
static
int
tcp6_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
struct
tcp_iter_state
*
st
;
...
...
@@ -2072,6 +2073,7 @@ void tcp6_proc_exit(void)
{
tcp_proc_unregister
(
&
tcp6_seq_afinfo
);
}
#endif
struct
proto
tcpv6_prot
=
{
.
name
=
"TCPv6"
,
...
...
net/sched/estimator.c
View file @
081fc6c7
...
...
@@ -26,7 +26,6 @@
#include <linux/skbuff.h>
#include <linux/rtnetlink.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <net/sock.h>
#include <net/pkt_sched.h>
...
...
net/sched/police.c
View file @
081fc6c7
...
...
@@ -27,7 +27,6 @@
#include <linux/skbuff.h>
#include <linux/rtnetlink.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <net/sock.h>
#include <net/pkt_sched.h>
...
...
net/sched/sch_api.c
View file @
081fc6c7
...
...
@@ -32,6 +32,7 @@
#include <linux/rtnetlink.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/kmod.h>
#include <net/sock.h>
...
...
@@ -1059,27 +1060,27 @@ int psched_us_per_tick = 1;
int
psched_tick_per_us
=
1
;
#ifdef CONFIG_PROC_FS
static
int
psched_read_proc
(
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
,
int
*
eof
,
void
*
data
)
static
int
psched_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
int
len
;
len
=
sprintf
(
buffer
,
"%08x %08x %08x %08x
\n
"
,
seq_printf
(
seq
,
"%08x %08x %08x %08x
\n
"
,
psched_tick_per_us
,
psched_us_per_tick
,
1000000
,
HZ
);
len
-=
offset
;
if
(
len
>
length
)
len
=
length
;
if
(
len
<
0
)
len
=
0
;
*
start
=
buffer
+
offset
;
*
eof
=
1
;
return
0
;
}
return
len
;
static
int
psched_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
return
single_open
(
file
,
psched_show
,
PDE
(
inode
)
->
data
);
}
static
struct
file_operations
psched_fops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
psched_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
#endif
#if PSCHED_CLOCK_SOURCE == PSCHED_GETTIMEOFDAY
...
...
@@ -1250,9 +1251,7 @@ int __init pktsched_init(void)
tc_filter_init
();
#endif
#ifdef CONFIG_PROC_FS
create_proc_read_entry
(
"net/psched"
,
0
,
0
,
psched_read_proc
,
NULL
);
#endif
proc_net_fops_create
(
"psched"
,
0
,
&
psched_fops
);
return
0
;
}
net/sched/sch_atm.c
View file @
081fc6c7
...
...
@@ -216,6 +216,13 @@ static void sch_atm_pop(struct atm_vcc *vcc,struct sk_buff *skb)
tasklet_schedule
(
&
p
->
task
);
}
static
const
u8
llc_oui_ip
[]
=
{
0xaa
,
/* DSAP: non-ISO */
0xaa
,
/* SSAP: non-ISO */
0x03
,
/* Ctrl: Unnumbered Information Command PDU */
0x00
,
/* OUI: EtherType */
0x00
,
0x00
,
0x08
,
0x00
};
/* Ethertype IP (0800) */
static
int
atm_tc_change
(
struct
Qdisc
*
sch
,
u32
classid
,
u32
parent
,
struct
rtattr
**
tca
,
unsigned
long
*
arg
)
...
...
@@ -322,11 +329,10 @@ static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent,
flow
->
next
=
p
->
link
.
next
;
p
->
link
.
next
=
flow
;
flow
->
hdr_len
=
hdr_len
;
if
(
hdr
)
memcpy
(
flow
->
hdr
,
hdr
,
hdr_len
);
else
{
memcpy
(
flow
->
hdr
,
llc_oui
,
sizeof
(
llc_oui
));
((
u16
*
)
flow
->
hdr
)[
3
]
=
htons
(
ETH_P_IP
);
}
if
(
hdr
)
memcpy
(
flow
->
hdr
,
hdr
,
hdr_len
);
else
memcpy
(
flow
->
hdr
,
llc_oui_ip
,
sizeof
(
llc_oui_ip
));
*
arg
=
(
unsigned
long
)
flow
;
return
0
;
err_out:
...
...
net/sched/sch_htb.c
View file @
081fc6c7
...
...
@@ -32,7 +32,6 @@
#include <asm/bitops.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/mm.h>
...
...
net/xfrm/xfrm_user.c
View file @
081fc6c7
...
...
@@ -433,9 +433,9 @@ static int verify_userspi_info(struct xfrm_userspi_info *p)
case
IPPROTO_COMP
:
/* IPCOMP spi is 16-bits. */
if
(
p
->
min
>=
0x10000
||
p
->
max
>=
0x10000
)
if
(
p
->
max
>=
0x10000
)
return
-
EINVAL
;
break
;
default:
return
-
EINVAL
;
...
...
@@ -470,7 +470,7 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh, void **
spin_lock_bh
(
&
x
->
lock
);
if
(
x
->
km
.
state
!=
XFRM_STATE_DEAD
)
{
xfrm_alloc_spi
(
x
,
p
->
min
,
p
->
max
);
xfrm_alloc_spi
(
x
,
htonl
(
p
->
min
),
htonl
(
p
->
max
)
);
if
(
x
->
id
.
spi
)
resp_skb
=
xfrm_state_netlink
(
skb
,
x
,
nlh
->
nlmsg_seq
);
}
...
...
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