Commit 03c41c434775c52092d17a5031ad8ebaaf555bc4
Committed by
Greg KH
1 parent
8800cea620
Exists in
master
and in
7 other branches
[PATCH] aoe: improve allowed interfaces configuration
improve allowed interfaces configuration Signed-off-by: Ed L. Cashin <ecashin@coraid.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> diff -uprN a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt
Showing 2 changed files with 39 additions and 1 deletions Side-by-side Diff
Documentation/aoe/aoe.txt
... | ... | @@ -33,6 +33,9 @@ |
33 | 33 | "cat /dev/etherd/err" blocks, waiting for error diagnostic output, |
34 | 34 | like any retransmitted packets. |
35 | 35 | |
36 | + The /dev/etherd/interfaces special file is obsoleted by the | |
37 | + aoe_iflist boot option and module option (and its sysfs entry | |
38 | + described in the next section). | |
36 | 39 | "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to |
37 | 40 | limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from |
38 | 41 | untrusted networks should be ignored as a matter of security. |
... | ... | @@ -89,4 +92,24 @@ |
89 | 92 | e4.7 eth1 up |
90 | 93 | e4.8 eth1 up |
91 | 94 | e4.9 eth1 up |
95 | + | |
96 | + Use /sys/module/aoe/parameters/aoe_iflist (or better, the driver | |
97 | + option discussed below) instead of /dev/etherd/interfaces to limit | |
98 | + AoE traffic to the network interfaces in the given | |
99 | + whitespace-separated list. Unlike the old character device, the | |
100 | + sysfs entry can be read from as well as written to. | |
101 | + | |
102 | + It's helpful to trigger discovery after setting the list of allowed | |
103 | + interfaces. If your distro provides an aoe-discover script, you can | |
104 | + use that. Otherwise, you can directly use the /dev/etherd/discover | |
105 | + file described above. | |
106 | + | |
107 | +DRIVER OPTIONS | |
108 | + | |
109 | + There is a boot option for the built-in aoe driver and a | |
110 | + corresponding module parameter, aoe_iflist. Without this option, | |
111 | + all network interfaces may be used for ATA over Ethernet. Here is a | |
112 | + usage example for the module parameter. | |
113 | + | |
114 | + modprobe aoe_iflist="eth1 eth3" |
drivers/block/aoe/aoenet.c
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | #include <linux/hdreg.h> |
8 | 8 | #include <linux/blkdev.h> |
9 | 9 | #include <linux/netdevice.h> |
10 | +#include <linux/moduleparam.h> | |
10 | 11 | #include "aoe.h" |
11 | 12 | |
12 | 13 | #define NECODES 5 |
13 | 14 | |
... | ... | @@ -26,7 +27,20 @@ |
26 | 27 | }; |
27 | 28 | |
28 | 29 | static char aoe_iflist[IFLISTSZ]; |
30 | +module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600); | |
31 | +MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n"); | |
29 | 32 | |
33 | +#ifndef MODULE | |
34 | +static int __init aoe_iflist_setup(char *str) | |
35 | +{ | |
36 | + strncpy(aoe_iflist, str, IFLISTSZ); | |
37 | + aoe_iflist[IFLISTSZ - 1] = '\0'; | |
38 | + return 1; | |
39 | +} | |
40 | + | |
41 | +__setup("aoe_iflist=", aoe_iflist_setup); | |
42 | +#endif | |
43 | + | |
30 | 44 | int |
31 | 45 | is_aoe_netif(struct net_device *ifp) |
32 | 46 | { |
... | ... | @@ -36,7 +50,8 @@ |
36 | 50 | if (aoe_iflist[0] == '\0') |
37 | 51 | return 1; |
38 | 52 | |
39 | - for (p = aoe_iflist; *p; p = q + strspn(q, WHITESPACE)) { | |
53 | + p = aoe_iflist + strspn(aoe_iflist, WHITESPACE); | |
54 | + for (; *p; p = q + strspn(q, WHITESPACE)) { | |
40 | 55 | q = p + strcspn(p, WHITESPACE); |
41 | 56 | if (q != p) |
42 | 57 | len = q - p; |