blob: b76e2c3e640b1408f4141b32b13ec0e74170ab70 [file] [log] [blame]
Ben Hutchingscfe91ed2011-10-31 18:42:29 +00001/****************************************************************************
2 * Test cases for ethtool command-line parsing
3 * Copyright 2011 Solarflare Communications Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published
7 * by the Free Software Foundation, incorporated herein by reference.
8 */
9
10#include <stdio.h>
11#include <stdlib.h>
Ben Hutchingsdfacc4a2011-10-31 18:29:35 +000012#define TEST_NO_WRAPPERS
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000013#include "internal.h"
14
15static struct test_case {
16 int rc;
17 const char *args;
18} test_cases[] = {
19 { 1, "" },
20 { 0, "devname" },
21 { 0, "15_char_devname" },
22 { 1, "16_char_devname!" },
23 /* Argument parsing for -s is specialised */
24 { 0, "-s devname" },
Ben Hutchings0a74e372012-09-06 19:21:14 +010025 { 0, "--change devname speed 100 duplex half mdix auto" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000026 { 1, "-s devname speed foo" },
27 { 1, "--change devname speed" },
28 { 0, "-s devname duplex half" },
29 { 1, "--change devname duplex foo" },
30 { 1, "-s devname duplex" },
Ben Hutchings0a74e372012-09-06 19:21:14 +010031 { 1, "--change devname mdix foo" },
32 { 1, "-s devname mdix" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000033 { 0, "--change devname port tp" },
34 { 1, "-s devname port foo" },
35 { 1, "--change devname port" },
36 { 0, "-s devname autoneg on" },
37 { 1, "--change devname autoneg foo" },
38 { 1, "-s devname autoneg" },
39 { 0, "--change devname advertise 0x1" },
David Decotigny33133ab2016-03-25 09:21:01 -070040 { 0, "--change devname advertise 0xf" },
41 { 0, "--change devname advertise 0Xf" },
42 { 0, "--change devname advertise 1" },
43 { 0, "--change devname advertise f" },
44 { 0, "--change devname advertise 01" },
45 { 0, "--change devname advertise 0f" },
46 { 0, "--change devname advertise 0xfffffffffffffffffffffffffffffffff" },
47 { 0, "--change devname advertise fffffffffffffffffffffffffffffffff" },
48 { 0, "--change devname advertise 0x0000fffffffffffffffffffffffffffff" },
49 { 0, "--change devname advertise 0000fffffffffffffffffffffffffffff" },
50 { 1, "-s devname advertise" },
51 { 1, "-s devname advertise 0x" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000052 { 1, "-s devname advertise foo" },
David Decotigny33133ab2016-03-25 09:21:01 -070053 { 1, "-s devname advertise 0xfoo" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000054 { 1, "--change devname advertise" },
55 { 0, "-s devname phyad 1" },
56 { 1, "--change devname phyad foo" },
57 { 1, "-s devname phyad" },
58 { 0, "--change devname xcvr external" },
59 { 1, "-s devname xcvr foo" },
60 { 1, "--change devname xcvr" },
61 { 0, "-s devname wol p" },
62 { 1, "--change devname wol" },
63 { 0, "-s devname sopass 01:23:45:67:89:ab" },
64 { 1, "--change devname sopass 01:23:45:67:89:" },
65 { 1, "-s devname sopass 01:23:45:67:89" },
66 { 1, "--change devname sopass" },
67 { 0, "-s devname msglvl 1" },
68 { 1, "--change devname msglvl" },
69 { 0, "-s devname msglvl hw on rx_status off" },
70 { 1, "--change devname msglvl hw foo" },
71 { 1, "-s devname msglvl hw" },
72 { 0, "--change devname speed 100 duplex half port tp autoneg on advertise 0x1 phyad 1 xcvr external wol p sopass 01:23:45:67:89:ab msglvl 1" },
73 { 1, "-s devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +000074 { 1, "-s" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000075 { 0, "-a devname" },
76 { 0, "--show-pause devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +000077 { 1, "-a" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000078 /* Many other sub-commands use parse_generic_cmdline() and
79 * don't need to be check in that much detail. */
80 { 0, "-A devname autoneg on" },
81 { 1, "--pause devname autoneg foo" },
82 { 1, "-A devname autoneg" },
83 { 0, "--pause devname rx off" },
84 { 0, "-A devname tx on rx on autoneg off" },
85 { 1, "--pause devname foo on" },
Ben Hutchings75300bb2011-10-31 18:52:34 +000086 { 1, "-A" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000087 { 0, "-c devname" },
88 { 0, "--show-coalesce devname" },
89 { 0, "-C devname adaptive-rx on adaptive-tx off rx-usecs 1 rx-frames 2 rx-usecs-irq 3 rx-frames-irq 4 tx-usecs 5 tx-frames 6 tx-usecs-irq 7 tx-frames-irq 8 stats-block-usecs 9 pkt-rate-low 10" },
90 { 0, "--coalesce devname rx-usecs-low 11 rx-frames-low 12 tx-usecs-low 13 tx-frames-low 14 pkt-rate-high 15 rx-usecs-high 16 rx-frames-high 17 tx-usecs-high 18 tx-frames-high 19 sample-interval 20" },
91 { 1, "-C devname adaptive-rx foo" },
92 { 1, "--coalesce devname adaptive-rx" },
93 { 1, "-C devname foo on" },
Ben Hutchings75300bb2011-10-31 18:52:34 +000094 { 1, "-C" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000095 { 0, "-g devname" },
96 { 0, "--show-ring devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +000097 { 1, "-g" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +000098 { 0, "-G devname rx 1 rx-mini 2 rx-jumbo 3 tx 4" },
99 { 0, "--set-ring devname rx 1 rx-mini 2 rx-jumbo 3 tx 4" },
100 { 1, "-G devname rx foo" },
101 { 1, "--set-ring devname rx" },
102 { 1, "-G devname foo 1" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000103 { 1, "-G" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000104 { 1, "-k" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000105 { 1, "-K" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000106 { 0, "-i devname" },
107 { 0, "--driver devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000108 { 1, "-i" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000109 { 0, "-d devname" },
110 { 0, "--register-dump devname raw on file foo" },
111 { 1, "-d devname raw foo" },
112 { 1, "--register-dump devname file" },
113 { 1, "-d devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000114 { 1, "-d" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000115 { 0, "-e devname" },
116 { 0, "--eeprom-dump devname raw on offset 1 length 2" },
117 { 1, "-e devname raw foo" },
118 { 1, "--eeprom-dump devname offset foo" },
119 { 1, "-e devname length" },
120 { 1, "--eeprom-dump devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000121 { 1, "-e" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000122 { 0, "-E devname" },
123 { 0, "--change-eeprom devname magic 0x87654321 offset 0 value 1" },
124 { 0, "-E devname magic 0x87654321 offset 0 length 2" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000125 { 1, "-E" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000126 { 0, "-r devname" },
127 { 0, "--negotiate devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000128 { 1, "-r" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000129 { 0, "-p devname" },
130 { 0, "--identify devname 1" },
131 { 1, "-p devname 1 foo" },
132 { 1, "--identify devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000133 { 1, "-p" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000134 /* Argument parsing for -t is specialised */
135 { 0, "-t devname" },
136 { 0, "--test devname online" },
137 { 1, "-t devname foo" },
138 { 1, "--test devname online foo" },
139 { 0, "-S devname" },
140 { 0, "--statistics devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000141 { 1, "-S" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000142 /* Argument parsing for -n/-u is specialised */
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000143 { 0, "-n devname rx-flow-hash tcp4" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000144 { 0, "-u devname rx-flow-hash sctp4" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000145 { 0, "--show-nfc devname rx-flow-hash udp6" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000146 { 0, "--show-ntuple devname rx-flow-hash esp6" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000147 { 1, "-n devname rx-flow-hash foo" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000148 { 1, "-u devname rx-flow-hash foo" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000149 { 1, "--show-nfc devname rx-flow-hash" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000150 { 1, "--show-ntuple devname rx-flow-hash" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000151 { 1, "-n" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000152 /* Argument parsing for -f is specialised */
153 { 1, "-f devname" },
154 { 0, "--flash devname filename" },
155 { 0, "-f devname filename 1" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000156 { 1, "-f devname filename 1 foo" },
157 { 1, "-f" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000158 /* Argument parsing for -N/-U is specialised */
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000159 { 0, "-N devname rx-flow-hash tcp4 mvtsdfn" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000160 { 0, "--config-ntuple devname rx-flow-hash tcp4 r" },
161 { 1, "-U devname rx-flow-hash tcp4" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000162 { 1, "--config-nfc devname rx-flow-hash foo" },
163 { 1, "-N devname rx-flow-hash" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000164 { 1, "--config-ntuple devname foo" },
165 { 0, "-U devname delete 1" },
166 { 1, "--config-nfc devname delete foo" },
167 { 1, "-N devname delete" },
168 { 0, "--config-ntuple devname flow-type ether src 01:23:45:67:89:ab m cd:ef:01:23:45:67 dst 89:ab:cd:ef:01:23 m 45:67:89:ab:cd:ef proto 0x0123 m 0x4567 vlan 0x89ab m 0xcdef action 0" },
169 { 0, "-U devname flow-type ether src 01:23:45:67:89:ab src-mask cd:ef:01:23:45:67 dst 89:ab:cd:ef:01:23 dst-mask 45:67:89:ab:cd:ef proto 0x0123 proto-mask 0x4567 vlan 0x89ab vlan-mask 0xcdef action 1" },
170 { 1, "--config-nfc devname flow-type ether src 01:23:45:67:89: action 3" },
171 { 1, "-N devname flow-type ether src 01:23:45:67:89 action 4" },
172 { 0, "--config-ntuple devname flow-type ip4 src-ip 0.123.45.67 m 89.0.123.45 dst-ip 67.89.0.123 m 45.67.89.0 tos 1 m 1 l4proto 0x23 m 0x45 l4data 0xfedcba98 m 76543210 vlan 0x89ab m 0xcdef action 6" },
173 { 0, "-U devname flow-type ip4 src-ip 0.123.45.67 src-ip-mask 89.0.123.45 dst-ip 67.89.0.123 dst-ip-mask 45.67.89.0 tos 1 tos-mask 1 l4proto 0x23 l4proto-mask 0x45 l4data 0xfedcba98 l4data-mask 76543210 vlan 0x89ab vlan-mask 0xcdef action 7" },
174 { 0, "--config-nfc devname flow-type tcp4 src-ip 0.123.45.67 m 89.0.123.45 dst-ip 67.89.0.123 m 45.67.89.0 tos 1 m 1 src-port 23456 m 7890 dst-port 12345 m 6789 vlan 0x89ab m 0xcdef action 8" },
175 { 0, "-N devname flow-type tcp4 src-ip 0.123.45.67 src-ip-mask 89.0.123.45 dst-ip 67.89.0.123 dst-ip-mask 45.67.89.0 tos 1 tos-mask 1 src-port 23456 src-port-mask 7890 dst-port 12345 dst-port-mask 6789 vlan 0x89ab vlan-mask 0xcdef action 9" },
176 { 0, "--config-ntuple devname flow-type ah4 src-ip 0.123.45.67 m 89.0.123.45 dst-ip 67.89.0.123 m 45.67.89.0 tos 1 m 1 spi 2 m 3 vlan 0x89ab m 0xcdef action 10" },
177 { 0, "-U devname flow-type ah4 src-ip 0.123.45.67 src-ip-mask 89.0.123.45 dst-ip 67.89.0.123 dst-ip-mask 45.67.89.0 tos 1 tos-mask 1 spi 2 spi-mask 3 vlan 0x89ab vlan-mask 0xcdef action 11" },
178 { 1, "--config-nfc devname flow-type tcp4 action foo" },
179 { 1, "-N devname flow-type foo" },
180 { 1, "--config-ntuple devname flow-type" },
181 { 1, "-U devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000182 { 1, "-N" },
Ben Hutchings52e837f2012-01-21 00:35:55 +0000183 { 1, "-U" },
Richard Cochran0fdcc8c2012-04-03 19:58:23 +0200184 { 0, "-T devname" },
185 { 0, "--show-time-stamping devname" },
186 { 1, "-T" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000187 { 0, "-x devname" },
188 { 0, "--show-rxfh-indir devname" },
Venkat Duvvuru86c03262014-07-22 17:51:07 +0530189 { 0, "--show-rxfh devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000190 { 1, "-x" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000191 /* Argument parsing for -X is specialised */
192 { 0, "-X devname equal 2" },
193 { 0, "--set-rxfh-indir devname equal 256" },
194 { 1, "-X devname equal 0" },
195 { 1, "--set-rxfh-indir devname equal foo" },
196 { 1, "-X devname equal" },
Jonathan Lemon8c8bfaa2019-04-01 11:42:45 -0700197 { 1, "-X devname start" },
198 { 1, "-X devname start 3" },
199 { 0, "-X devname start 4 equal 2" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000200 { 0, "--set-rxfh-indir devname weight 1 2 3 4" },
Jonathan Lemon8c8bfaa2019-04-01 11:42:45 -0700201 { 0, "--set-rxfh-indir devname start 4 weight 1 2 3 4" },
Venkat Duvvuru86c03262014-07-22 17:51:07 +0530202 { 0, "--rxfh devname hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee" },
203 { 0, "-X devname hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee" },
Ben Hutchings14ef76c2014-09-21 23:40:29 +0100204#if 0
205 /* XXX These won't fail as expected because we don't parse the
206 * hash key until after the first send_ioctl(). That needs to
207 * be changed before we enable them.
208 */
Venkat Duvvuru86c03262014-07-22 17:51:07 +0530209 { 1, "--rxfh devname hkey foo" },
210 { 1, "-X devname hkey foo" },
Ben Hutchings14ef76c2014-09-21 23:40:29 +0100211#endif
Venkat Duvvuru86c03262014-07-22 17:51:07 +0530212 { 0, "--rxfh devname hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee weight 1 2 3 4" },
213 { 0, "-X devname weight 1 2 3 4 hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee" },
214 { 0, "--rxfh devname hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee equal 2" },
215 { 0, "-X devname equal 2 hkey 48:15:6e:bb:d8:bd:6f:b1:a4:c6:7a:c4:76:1c:29:98:da:e1:ae:6c:2e:12:2f:c0:b9:be:61:3d:00:54:35:9e:09:05:c7:d7:93:72:4a:ee" },
216 { 1, "--rxfh devname weight 1 2 3 4 equal 8" },
217 { 1, "-X devname weight 1 2 3 4 equal 8" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000218 { 1, "-X devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000219 { 1, "-X" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000220 { 0, "-P devname" },
221 { 0, "--show-permaddr devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000222 { 1, "-P" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000223 { 0, "-w devname" },
224 { 0, "--get-dump devname data filename" },
225 { 0, "-w devname data filename" },
226 { 1, "--get-dump devname data" },
227 { 1, "-w devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000228 { 1, "-w" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000229 { 0, "-W devname 1" },
230 { 0, "--set-dump devname 2" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000231 { 1, "-W devname 1 foo" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000232 { 1, "-W devname foo" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000233 { 1, "-W" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000234 { 0, "-l devname" },
235 { 0, "--show-channels devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000236 { 1, "-l" },
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000237 { 0, "-L devname rx 1 tx 2 other 3 combined 4" },
238 { 0, "--set-channels devname rx 1 tx 2 other 3 combined 4" },
239 { 1, "-L devname rx foo" },
240 { 1, "--set-channels devname rx" },
241 { 0, "-L devname" },
Ben Hutchings75300bb2011-10-31 18:52:34 +0000242 { 1, "-L" },
Ben Hutchingse1ee5962011-11-30 02:29:21 +0000243 { 0, "--show-priv-flags devname" },
244 { 1, "--show-priv-flags devname foo" },
245 { 1, "--show-priv-flags" },
Stuart Hodgson2edf5672012-05-18 15:58:45 +0100246 { 1, "-m" },
247 { 0, "-m devname" },
248 { 1, "--dump-module-eeprom" },
249 { 0, "--dump-module-eeprom devname" },
Aurelien Guillaume749f3872012-12-02 21:21:01 +0100250 { 1, "--module-info" },
251 { 0, "--module-info devname" },
Stuart Hodgson2edf5672012-05-18 15:58:45 +0100252 { 0, "-m devname raw on" },
253 { 0, "-m devname raw off" },
254 { 0, "-m devname hex on" },
255 { 0, "-m devname hex off" },
256 { 1, "-m devname hex on raw on" },
257 { 0, "-m devname offset 4 length 6" },
Yuval Mintza9fc8272012-06-10 11:48:08 +0300258 { 1, "--show-eee" },
259 { 0, "--show-eee devname" },
260 { 1, "--show-eee devname foo" },
261 { 1, "--set-eee" },
262 { 1, "--set-eee devname" },
Ben Hutchings595b6622012-06-13 22:38:07 +0100263 { 1, "--set-eee devname foo" },
Yuval Mintza9fc8272012-06-10 11:48:08 +0300264 { 0, "--set-eee devname eee on" },
265 { 0, "--set-eee devname eee off" },
Ben Hutchings595b6622012-06-13 22:38:07 +0100266 { 1, "--set-eee devname eee foo" },
Yuval Mintza9fc8272012-06-10 11:48:08 +0300267 { 0, "--set-eee devname tx-lpi on" },
268 { 0, "--set-eee devname tx-lpi off" },
Ben Hutchings595b6622012-06-13 22:38:07 +0100269 { 1, "--set-eee devname tx-lpi foo" },
270 { 0, "--set-eee devname tx-timer 42 advertise 0x4321" },
Yuval Mintza9fc8272012-06-10 11:48:08 +0300271 { 1, "--set-eee devname tx-timer foo" },
272 { 1, "--set-eee devname advertise foo" },
Edward Creed4b9f3f2018-09-05 18:54:57 +0100273 { 1, "--set-fec devname" },
274 { 0, "--set-fec devname encoding auto" },
Edward Cree98c148e2018-09-19 17:06:25 +0100275 { 0, "--set-fec devname encoding off" },
276 { 0, "--set-fec devname encoding baser rs" },
277 { 0, "--set-fec devname encoding auto auto" },
Edward Creed4b9f3f2018-09-05 18:54:57 +0100278 { 1, "--set-fec devname encoding foo" },
Edward Cree98c148e2018-09-19 17:06:25 +0100279 { 1, "--set-fec devname encoding auto foo" },
280 { 1, "--set-fec devname encoding none" },
Edward Creed4b9f3f2018-09-05 18:54:57 +0100281 { 1, "--set-fec devname auto" },
Ben Hutchingse1ee5962011-11-30 02:29:21 +0000282 /* can't test --set-priv-flags yet */
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000283 { 0, "-h" },
284 { 0, "--help" },
285 { 0, "--version" },
286 { 1, "--foo" },
287 { 1, "-foo" },
288 { 1, "-0" },
289};
290
Ben Hutchingsdfacc4a2011-10-31 18:29:35 +0000291int send_ioctl(struct cmd_context *ctx, void *cmd)
292{
293 /* If we get this far then parsing succeeded */
294 test_exit(0);
295}
296
Ben Hutchingscfe91ed2011-10-31 18:42:29 +0000297int main(void)
298{
299 struct test_case *tc;
300 int test_rc;
301 int rc = 0;
302
303 for (tc = test_cases; tc < test_cases + ARRAY_SIZE(test_cases); tc++) {
304 if (getenv("ETHTOOL_TEST_VERBOSE"))
305 printf("I: Test command line: ethtool %s\n", tc->args);
306 test_rc = test_cmdline(tc->args);
307 if (test_rc != tc->rc) {
308 fprintf(stderr, "E: ethtool %s returns %d\n",
309 tc->args, test_rc);
310 rc = 1;
311 }
312 }
313
314 return rc;
315}