2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-09-01 17:40:05 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-07-12 19:33:09 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-04-16 00:41:16 -07:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
2007-09-17 11:56:21 -07:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2014-01-29 16:43:31 +09:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
|
|
|
|
|
2014-11-19 14:44:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
|
|
|
|
|
2014-11-19 14:44:40 +02:00
|
|
|
|
|
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-12 11:41:29 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-23 03:59:13 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2013-12-05 20:42:58 -08:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2012-11-25 22:07:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
|
|
|
|
|
2012-11-25 22:07:40 +00:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2009-01-20 11:01:48 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tun: Add ability to create tun device with given index
Tun devices cannot be created with ifidex user wants, but it's
required by checkpoint-restore project.
Long time ago such ability was implemented for rtnl_ops-based
interface for creating links (9c7dafbf net: Allow to create links
with given ifindex), but the only API for creating and managing
tuntap devices is ioctl-based and is evolving with adding new ones
(cde8b15f tuntap: add ioctl to attach or detach a file form tuntap
device).
Following that trend, here's how a new ioctl that sets the ifindex
for device, that _will_ be created by TUNSETIFF ioctl looks like.
So those who want a tuntap device with the ifindex N, should open
the tun device, call ioctl(fd, TUNSETIFINDEX, &N), then call TUNSETIFF.
If the index N is busy, then the register_netdev will find this out
and the ioctl would be failed with -EBUSY.
If setifindex is not called, then it will be generated as before.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:31:38 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2012-11-25 22:07:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
|
|
|
|
|
2011-11-15 15:29:55 +00:00
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2015-02-03 16:36:17 -05:00
|
|
|
|
2010-03-17 17:45:01 +02:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
2013-01-23 03:59:13 +00:00
|
|
|
|
2008-04-12 18:48:58 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-21 07:17:21 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-23 03:59:13 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-21 07:17:21 +00:00
|
|
|
|
2013-01-23 03:59:13 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived
list_for_each_entry(pos, head, member)
The hlist ones were greedy and wanted an extra parameter:
hlist_for_each_entry(tpos, pos, head, member)
Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.
Besides the semantic patch, there was some manual work required:
- Fix up the actual hlist iterators in linux/list.h
- Fix up the declaration of other iterators based on the hlist ones.
- A very small amount of places were using the 'node' parameter, this
was modified to use 'obj->member' instead.
- Coccinelle didn't handle the hlist_for_each_entry_safe iterator
properly, so those had to be fixed up manually.
The semantic patch which is mostly the work of Peter Senna Tschudin is here:
@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
type T;
expression a,c,d,e;
identifier b;
statement S;
@@
-T b;
<+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
...+>
[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 17:06:00 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-12 19:22:57 +00:00
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
2013-01-23 03:59:13 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
net: rfs: add hash collision detection
Receive Flow Steering is a nice solution but suffers from
hash collisions when a mix of connected and unconnected traffic
is received on the host, when flow hash table is populated.
Also, clearing flow in inet_release() makes RFS not very good
for short lived flows, as many packets can follow close().
(FIN , ACK packets, ...)
This patch extends the information stored into global hash table
to not only include cpu number, but upper part of the hash value.
I use a 32bit value, and dynamically split it in two parts.
For host with less than 64 possible cpus, this gives 6 bits for the
cpu number, and 26 (32-6) bits for the upper part of the hash.
Since hash bucket selection use low order bits of the hash, we have
a full hash match, if /proc/sys/net/core/rps_sock_flow_entries is big
enough.
If the hash found in flow table does not match, we fallback to RPS (if
it is enabled for the rxqueue).
This means that a packet for an non connected flow can avoid the
IPI through a unrelated/victim CPU.
This also means we no longer have to clear the table at socket
close time, and this helps short lived flows performance.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-02-06 12:59:01 -08:00
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2013-12-05 20:42:58 -08:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-01-10 16:18:26 +08:00
|
|
|
|
2014-02-16 15:55:20 +01:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-05 16:44:57 +08:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2013-12-15 22:12:06 -08:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
|
|
|
|
|
2014-01-02 13:24:28 +08:00
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-18 21:34:11 +00:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-18 21:34:11 +00:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-18 11:00:27 +08:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-09-05 17:53:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
|
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2014-03-24 00:02:32 +05:30
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2013-09-05 17:53:59 +08:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2013-01-11 16:59:34 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2013-01-11 16:59:34 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2013-01-28 00:38:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-01-28 00:38:02 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2013-01-28 00:38:02 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2014-03-24 00:02:32 +05:30
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2014-03-24 00:02:32 +05:30
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2013-09-05 17:53:59 +08:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
2013-09-05 17:53:59 +08:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:34 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-01-11 16:59:34 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
2009-01-20 10:57:48 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2009-01-20 11:02:28 +00:00
|
|
|
|
2009-01-20 10:57:48 +00:00
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:02:28 +00:00
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2009-01-20 11:02:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:02:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2013-12-05 20:42:58 -08:00
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 10:57:48 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2009-01-20 10:57:48 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-02-08 17:49:17 -08:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2009-02-08 17:49:17 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2009-02-08 17:49:17 -08:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drivers/net: Convert compare_ether_addr to ether_addr_equal
Use the new bool function ether_addr_equal to add
some clarity and reduce the likelihood for misuse
of compare_ether_addr for sorting.
Done via cocci script:
$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
- !compare_ether_addr(a, b)
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- compare_ether_addr(a, b)
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) == 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) != 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) == 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) != 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !!ether_addr_equal(a, b)
+ ether_addr_equal(a, b)
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-09 17:17:46 +00:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-09-13 14:30:00 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-31 19:50:51 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2014-01-22 03:03:23 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2014-01-22 03:03:23 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-01-22 03:03:23 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-01-22 03:03:23 +00:00
|
|
|
|
2013-12-22 18:54:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
2012-11-25 22:07:40 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2014-01-22 03:03:23 +00:00
|
|
|
|
|
|
|
|
|
2012-12-03 10:07:14 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-09-05 17:54:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-19 19:40:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tun: orphan an skb on tx
The following situation was observed in the field:
tap1 sends packets, tap2 does not consume them, as a result
tap1 can not be closed. This happens because
tun/tap devices can hang on to skbs undefinitely.
As noted by Herbert, possible solutions include a timeout followed by a
copy/change of ownership of the skb, or always copying/changing
ownership if we're going into a hostile device.
This patch implements the second approach.
Note: one issue still remaining is that since skbs
keep reference to tun socket and tun socket has a
reference to tun device, we won't flush backlog,
instead simply waiting for all skbs to get transmitted.
At least this is not user-triggerable, and
this was not reported in practice, my assumption is
other devices besides tap complete an skb
within finite time after it has been queued.
A possible solution for the second issue
would not to have socket reference the device,
instead, implement dev->destructor for tun, and
wait for all skbs to complete there, but this
needs some thought, probably too risky for 2.6.34.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Yan Vugenfirer <yvugenfi@redhat.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-04-13 04:59:44 +00:00
|
|
|
|
2013-09-05 17:54:00 +08:00
|
|
|
|
|
|
|
|
|
tun: orphan an skb on tx
The following situation was observed in the field:
tap1 sends packets, tap2 does not consume them, as a result
tap1 can not be closed. This happens because
tun/tap devices can hang on to skbs undefinitely.
As noted by Herbert, possible solutions include a timeout followed by a
copy/change of ownership of the skb, or always copying/changing
ownership if we're going into a hostile device.
This patch implements the second approach.
Note: one issue still remaining is that since skbs
keep reference to tun socket and tun socket has a
reference to tun device, we won't flush backlog,
instead simply waiting for all skbs to get transmitted.
At least this is not user-triggerable, and
this was not reported in practice, my assumption is
other devices besides tap complete an skb
within finite time after it has been queued.
A possible solution for the second issue
would not to have socket reference the device,
instead, implement dev->destructor for tun, and
wait for all skbs to complete there, but this
needs some thought, probably too risky for 2.6.34.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Yan Vugenfirer <yvugenfi@redhat.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-04-13 04:59:44 +00:00
|
|
|
|
|
|
|
|
|
2013-03-06 11:02:37 +00:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
|
|
|
|
|
2009-06-23 06:03:08 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-10-03 17:41:50 -07:00
|
|
|
|
2012-11-01 09:16:32 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2014-11-18 13:20:41 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-09-16 12:21:38 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-15 15:29:55 +00:00
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-15 05:25:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-05 20:42:58 -08:00
|
|
|
|
2011-06-15 05:25:01 +00:00
|
|
|
|
2013-12-05 20:42:58 -08:00
|
|
|
|
2011-06-15 05:25:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
2008-11-20 20:14:53 -08:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2011-06-15 05:25:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
2008-11-20 20:14:53 -08:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2011-08-16 06:29:01 +00:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2011-06-15 05:25:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
2013-06-11 17:01:08 +04:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2008-12-29 18:23:28 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2011-07-26 06:05:38 +00:00
|
|
|
|
2012-12-10 15:16:00 +00:00
|
|
|
|
2007-04-26 01:00:55 -07:00
|
|
|
|
2012-02-15 06:45:39 +00:00
|
|
|
|
2007-04-26 01:00:55 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2009-01-20 11:03:21 +00:00
|
|
|
|
|
|
|
|
|
2009-07-05 19:48:35 +00:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2009-01-20 10:59:05 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2009-07-05 19:48:35 +00:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2009-08-30 07:04:42 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:07:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2011-06-08 14:33:08 +00:00
|
|
|
|
|
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
|
|
|
|
|
2009-04-14 02:09:43 -07:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2013-08-08 14:38:47 -07:00
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
2008-08-15 15:15:10 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-02-01 00:45:17 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2013-07-10 13:43:27 +08:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2013-11-13 14:00:39 +08:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-12 19:22:57 +00:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-08-15 15:52:57 +03:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-08-15 15:52:57 +03:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-08-15 15:52:57 +03:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2013-08-15 15:52:57 +03:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
2009-06-08 00:20:01 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2009-06-08 00:20:01 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-11-30 18:03:31 +08:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2011-06-08 14:33:07 +00:00
|
|
|
|
2009-04-14 02:09:43 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2008-04-12 18:49:30 -07:00
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2013-11-13 14:00:39 +08:00
|
|
|
|
|
|
|
|
|
2013-07-18 10:55:15 +08:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
|
|
|
|
|
2013-07-18 10:55:15 +08:00
|
|
|
|
|
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2013-11-13 14:00:39 +08:00
|
|
|
|
|
|
|
|
|
2013-07-10 13:43:27 +08:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
|
|
|
|
|
2013-07-18 10:55:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2013-11-13 14:00:39 +08:00
|
|
|
|
|
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2013-07-10 13:43:27 +08:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
2013-07-10 13:43:27 +08:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2013-07-18 10:55:15 +08:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2013-07-18 10:55:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
2007-10-03 17:41:50 -07:00
|
|
|
|
2006-03-11 18:49:13 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-11 18:49:13 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
|
|
|
|
|
2008-06-17 21:10:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-19 15:30:44 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-04-25 17:40:23 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2011-06-03 11:51:20 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 09:27:41 +00:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
2013-02-11 09:27:41 +00:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2009-07-14 14:21:04 +00:00
|
|
|
|
2013-02-11 09:27:41 +00:00
|
|
|
|
2009-07-14 14:21:04 +00:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 09:27:41 +00:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 09:27:41 +00:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
|
|
|
|
|
2015-02-03 16:36:16 -05:00
|
|
|
|
2013-03-26 23:11:22 +00:00
|
|
|
|
2013-03-25 20:19:56 +00:00
|
|
|
|
2013-12-15 22:12:06 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2007-10-03 17:41:50 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-01-28 01:05:19 +00:00
|
|
|
|
2012-07-20 09:23:23 +00:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2009-02-14 20:46:39 -08:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-08 14:33:08 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2011-06-08 14:33:08 +00:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2014-11-13 16:54:14 +08:00
|
|
|
|
2014-11-03 04:30:13 +08:00
|
|
|
|
2014-11-03 04:30:14 +08:00
|
|
|
|
2014-11-03 04:30:13 +08:00
|
|
|
|
2015-01-13 17:13:44 +01:00
|
|
|
|
2014-11-03 04:30:13 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2014-11-03 04:30:14 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-03 04:30:14 +08:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-03 16:36:17 -05:00
|
|
|
|
|
|
|
|
|
2010-07-21 04:32:45 +00:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2010-07-21 04:32:45 +00:00
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
2010-07-21 04:32:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
2010-07-21 04:32:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-23 22:59:31 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-10 00:56:17 +00:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
2014-11-13 16:54:14 +08:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:48:02 -07:00
|
|
|
|
|
|
|
|
|
2014-11-03 04:30:13 +08:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-13 17:13:44 +01:00
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
|
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
|
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
2007-10-03 17:41:50 -07:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-11-25 22:07:41 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2014-12-25 23:22:49 -08:00
|
|
|
|
2014-11-07 21:22:23 +08:00
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2014-12-01 16:53:15 +08:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2014-12-01 16:53:15 +08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2013-12-10 22:05:45 -05:00
|
|
|
|
2013-12-06 14:16:51 +08:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2010-04-29 11:01:49 +00:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-04-29 11:01:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
2009-06-03 21:45:55 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2014-11-24 10:42:55 -05:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-19 19:40:10 +02:00
|
|
|
|
2013-04-24 21:59:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-19 19:40:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-24 10:42:55 -05:00
|
|
|
|
2014-12-25 23:05:03 -08:00
|
|
|
|
2013-12-10 22:05:45 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-04-24 21:59:23 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-12 02:59:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-12 02:59:41 +00:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2009-05-09 22:54:21 -07:00
|
|
|
|
|
|
|
|
|
2014-11-19 14:44:40 +02:00
|
|
|
|
2009-05-09 22:54:21 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-05-09 22:54:21 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-05-09 22:54:21 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-04 14:37:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-16 00:41:16 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 10:56:20 +00:00
|
|
|
|
|
|
|
|
|
2009-04-27 03:23:54 -07:00
|
|
|
|
|
|
|
|
|
2009-01-20 10:56:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-05-28 18:32:11 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-05-28 18:32:11 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
2009-08-28 18:12:43 -04:00
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
2009-08-28 18:12:43 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
2009-01-20 10:57:48 +00:00
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-04-22 20:40:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-23 03:59:12 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-11-18 21:34:11 +00:00
|
|
|
|
2006-06-22 16:07:52 -07:00
|
|
|
|
2009-08-28 18:12:43 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-22 16:07:52 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2009-09-16 21:36:13 +00:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
net: set name_assign_type in alloc_netdev()
Extend alloc_netdev{,_mq{,s}}() to take name_assign_type as argument, and convert
all users to pass NET_NAME_UNKNOWN.
Coccinelle patch:
@@
expression sizeof_priv, name, setup, txqs, rxqs, count;
@@
(
-alloc_netdev_mqs(sizeof_priv, name, setup, txqs, rxqs)
+alloc_netdev_mqs(sizeof_priv, name, NET_NAME_UNKNOWN, setup, txqs, rxqs)
|
-alloc_netdev_mq(sizeof_priv, name, setup, count)
+alloc_netdev_mq(sizeof_priv, name, NET_NAME_UNKNOWN, setup, count)
|
-alloc_netdev(sizeof_priv, name, setup)
+alloc_netdev(sizeof_priv, name, NET_NAME_UNKNOWN, setup)
)
v9: move comments here from the wrong commit
Signed-off-by: Tom Gundersen <teg@jklm.no>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-07-14 16:37:24 +02:00
|
|
|
|
|
|
|
|
|
2013-01-23 03:59:12 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-16 00:41:53 -07:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
tun: Add ability to create tun device with given index
Tun devices cannot be created with ifidex user wants, but it's
required by checkpoint-restore project.
Long time ago such ability was implemented for rtnl_ops-based
interface for creating links (9c7dafbf net: Allow to create links
with given ifindex), but the only API for creating and managing
tuntap devices is ioctl-based and is evolving with adding new ones
(cde8b15f tuntap: add ioctl to attach or detach a file form tuntap
device).
Following that trend, here's how a new ioctl that sets the ifindex
for device, that _will_ be created by TUNSETIFF ioctl looks like.
So those who want a tuntap device with the ifindex N, should open
the tun device, call ioctl(fd, TUNSETIFINDEX, &N), then call TUNSETIFF.
If the index N is busy, then the register_netdev will find this out
and the ioctl would be failed with -EBUSY.
If setifindex is not called, then it will be generated as before.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:31:38 +04:00
|
|
|
|
2015-02-04 14:37:34 +01:00
|
|
|
|
2008-11-19 22:10:37 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2010-03-17 17:45:01 +02:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
|
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-28 18:12:43 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-11 17:01:08 +04:00
|
|
|
|
2012-10-31 19:46:02 +00:00
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2013-07-25 13:00:33 +08:00
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2014-02-18 21:20:09 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
2012-12-02 17:19:45 +00:00
|
|
|
|
2013-09-11 18:09:48 +08:00
|
|
|
|
2012-12-02 17:19:45 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-09-11 18:09:48 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-01-28 00:38:02 +00:00
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 14:44:40 +02:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2008-07-10 16:59:11 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2008-07-10 16:59:11 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-09-11 18:09:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-23 03:58:10 +00:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-05-09 22:54:21 -07:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
2011-11-15 15:29:55 +00:00
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-03 16:36:17 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
|
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2013-01-11 16:59:32 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
2013-01-14 07:12:19 +00:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-01-20 11:01:48 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
2010-03-17 17:45:01 +02:00
|
|
|
|
tun: Add ability to create tun device with given index
Tun devices cannot be created with ifidex user wants, but it's
required by checkpoint-restore project.
Long time ago such ability was implemented for rtnl_ops-based
interface for creating links (9c7dafbf net: Allow to create links
with given ifindex), but the only API for creating and managing
tuntap devices is ioctl-based and is evolving with adding new ones
(cde8b15f tuntap: add ioctl to attach or detach a file form tuntap
device).
Following that trend, here's how a new ioctl that sets the ifindex
for device, that _will_ be created by TUNSETIFF ioctl looks like.
So those who want a tuntap device with the ifindex N, should open
the tun device, call ioctl(fd, TUNSETIFINDEX, &N), then call TUNSETIFF.
If the index N is busy, then the register_netdev will find this out
and the ioctl would be failed with -EBUSY.
If setifindex is not called, then it will be generated as before.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:31:38 +04:00
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-07-30 14:52:48 -07:00
|
|
|
|
2012-07-29 19:45:14 +00:00
|
|
|
|
2012-07-30 14:52:48 -07:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 14:44:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:46:01 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:01:48 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
tun: Add ability to create tun device with given index
Tun devices cannot be created with ifidex user wants, but it's
required by checkpoint-restore project.
Long time ago such ability was implemented for rtnl_ops-based
interface for creating links (9c7dafbf net: Allow to create links
with given ifindex), but the only API for creating and managing
tuntap devices is ioctl-based and is evolving with adding new ones
(cde8b15f tuntap: add ioctl to attach or detach a file form tuntap
device).
Following that trend, here's how a new ioctl that sets the ifindex
for device, that _will_ be created by TUNSETIFF ioctl looks like.
So those who want a tuntap device with the ifindex N, should open
the tun device, call ioctl(fd, TUNSETIFINDEX, &N), then call TUNSETIFF.
If the index N is busy, then the register_netdev will find this out
and the ioctl would be failed with -EBUSY.
If setifindex is not called, then it will be generated as before.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:31:38 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:45:56 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
2012-11-23 03:58:10 +00:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
2013-08-21 14:32:00 +04:00
|
|
|
|
|
|
|
|
|
tun: Allow to skip filter on attach
There's a small problem with sk-filters on tun devices. Consider
an application doing this sequence of steps:
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
ioctl(fd, TUNATTACHFILTER, &my_filter);
ioctl(fd, TUNSETPERSIST, 1);
close(fd);
At that point the tun0 will remain in the system and will keep in
mind that there should be a socket filter at address '&my_filter'.
If after that we do
fd = open("/dev/net/tun");
ioctl(fd, TUNSETIFF, { .ifr_name = "tun0" });
we most likely receive the -EFAULT error, since tun_attach() would
try to connect the filter back. But (!) if we provide a filter at
address &my_filter, then tun0 will be created and the "new" filter
would be attached, but application may not know about that.
This may create certain problems to anyone using tun-s, but it's
critical problem for c/r -- if we meet a persistent tun device
with a filter in mind, we will not be able to attach to it to dump
its state (flags, owner, address, vnethdr size, etc.).
The proposal is to allow to attach to tun device (with TUNSETIFF)
w/o attaching the filter to the tun-file's socket. After this
attach app may e.g clean the device by dropping the filter, it
doesn't want to have one, or (in case of c/r) get information
about the device with tun ioctls.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:32:21 +04:00
|
|
|
|
|
|
|
|
|
2013-08-21 14:32:00 +04:00
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2008-08-15 15:09:56 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2013-01-11 16:59:34 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:56 +00:00
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-07-02 22:50:25 -07:00
|
|
|
|
|
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:56 +00:00
|
|
|
|
2012-02-07 16:48:55 -08:00
|
|
|
|
2007-07-02 22:50:25 -07:00
|
|
|
|
|
|
|
|
|
2005-09-01 17:40:05 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2008-04-23 19:37:58 -07:00
|
|
|
|
2005-09-01 17:40:05 -07:00
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2008-04-23 19:37:58 -07:00
|
|
|
|
2005-09-01 17:40:05 -07:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-09-01 17:40:05 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
2011-04-19 06:13:10 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2008-07-03 03:46:16 -07:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2008-07-16 12:45:34 -07:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
tree-wide: fix comment/printk typos
"gadget", "through", "command", "maintain", "maintain", "controller", "address",
"between", "initiali[zs]e", "instead", "function", "select", "already",
"equal", "access", "management", "hierarchy", "registration", "interest",
"relative", "memory", "offset", "already",
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2010-11-01 15:38:34 -04:00
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
|
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-07-14 22:18:19 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2008-02-29 12:26:21 -08:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2009-02-05 21:25:32 -08:00
|
|
|
|
|
|
|
|
|
2010-03-17 17:45:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-16 15:05:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
|
|
|
|
|
2010-02-14 01:01:10 +00:00
|
|
|
|
|
|
|
|
|
2013-08-21 14:32:39 +04:00
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2013-08-21 14:32:39 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
2010-05-17 22:47:34 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-08-06 14:22:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2008-06-19 15:50:37 -06:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-08-22 11:27:32 -04:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2008-06-19 15:50:37 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2009-10-14 01:19:46 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
|
|
|
|
|
2014-03-24 00:02:32 +05:30
|
|
|
|
2009-01-20 11:01:48 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
tun: Add ability to create tun device with given index
Tun devices cannot be created with ifidex user wants, but it's
required by checkpoint-restore project.
Long time ago such ability was implemented for rtnl_ops-based
interface for creating links (9c7dafbf net: Allow to create links
with given ifindex), but the only API for creating and managing
tuntap devices is ioctl-based and is evolving with adding new ones
(cde8b15f tuntap: add ioctl to attach or detach a file form tuntap
device).
Following that trend, here's how a new ioctl that sets the ifindex
for device, that _will_ be created by TUNSETIFF ioctl looks like.
So those who want a tuntap device with the ifindex N, should open
the tun device, call ioctl(fd, TUNSETIFINDEX, &N), then call TUNSETIFF.
If the index N is busy, then the register_netdev will find this out
and the ioctl would be failed with -EBUSY.
If setifindex is not called, then it will be generated as before.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-21 14:31:38 +04:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
2014-05-16 15:11:48 -07:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2012-12-13 23:53:30 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2013-06-08 14:17:41 +08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-20 11:00:40 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-10-31 19:46:00 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-01-29 16:43:31 +09:00
|
|
|
|
2014-09-29 16:08:25 -07:00
|
|
|
|
2014-01-29 16:43:31 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-29 16:08:25 -07:00
|
|
|
|
2014-01-29 16:43:31 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-02-12 00:55:34 -08:00
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2014-11-07 13:52:07 -05:00
|
|
|
|
2014-06-19 15:36:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-11-06 22:52:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-01-29 16:43:31 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-18 23:01:12 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-27 18:32:40 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-15 14:59:53 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2011-11-15 14:59:53 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-11-19 15:17:31 +02:00
|
|
|
|
2011-11-15 14:59:53 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 14:30:00 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-07-27 13:53:43 +00:00
|
|
|
|
2013-07-19 19:40:10 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
2011-03-02 07:18:10 +00:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
|
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2008-04-16 00:40:46 -07:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-09-13 13:24:59 -04:00
|
|
|
|
2009-01-21 16:02:16 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
2012-10-31 19:45:58 +00:00
|
|
|
|
|
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
2012-10-31 19:45:57 +00:00
|
|
|
|
2010-01-14 06:17:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
driver core: add devname module aliases to allow module on-demand auto-loading
This adds:
alias: devname:<name>
to some common kernel modules, which will allow the on-demand loading
of the kernel module when the device node is accessed.
Ideally all these modules would be compiled-in, but distros seems too
much in love with their modularization that we need to cover the common
cases with this new facility. It will allow us to remove a bunch of pretty
useless init scripts and modprobes from init scripts.
The static device node aliases will be carried in the module itself. The
program depmod will extract this information to a file in the module directory:
$ cat /lib/modules/2.6.34-00650-g537b60d-dirty/modules.devname
# Device nodes to trigger on-demand module loading.
microcode cpu/microcode c10:184
fuse fuse c10:229
ppp_generic ppp c108:0
tun net/tun c10:200
dm_mod mapper/control c10:235
Udev will pick up the depmod created file on startup and create all the
static device nodes which the kernel modules specify, so that these modules
get automatically loaded when the device node is accessed:
$ /sbin/udevd --debug
...
static_dev_create_from_modules: mknod '/dev/cpu/microcode' c10:184
static_dev_create_from_modules: mknod '/dev/fuse' c10:229
static_dev_create_from_modules: mknod '/dev/ppp' c108:0
static_dev_create_from_modules: mknod '/dev/net/tun' c10:200
static_dev_create_from_modules: mknod '/dev/mapper/control' c10:235
udev_rules_apply_static_dev_perms: chmod '/dev/net/tun' 0666
udev_rules_apply_static_dev_perms: chmod '/dev/fuse' 0666
A few device nodes are switched to statically allocated numbers, to allow
the static nodes to work. This might also useful for systems which still run
a plain static /dev, which is completely unsafe to use with any dynamic minor
numbers.
Note:
The devname aliases must be limited to the *common* and *single*instance*
device nodes, like the misc devices, and never be used for conceptually limited
systems like the loop devices, which should rather get fixed properly and get a
control node for losetup to talk to, instead of creating a random number of
device nodes in advance, regardless if they are ever used.
This facility is to hide the mess distros are creating with too modualized
kernels, and just to hide that these modules are not compiled-in, and not to
paper-over broken concepts. Thanks! :)
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Alasdair G Kergon <agk@redhat.com>
Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
Cc: Ian Kent <raven@themaw.net>
Signed-Off-By: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-05-20 18:07:20 +02:00
|
|
|
|