Gentoo Archives: gentoo-commits

From: Ben Kohler <bkohler@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: net-wireless/iwd/, net-wireless/iwd/files/
Date: Fri, 08 Jan 2021 01:06:14
Message-Id: 1610067754.ee2f492c617ac4cc8f8c1d4b01563cc170a803c8.bkohler@gentoo
1 commit: ee2f492c617ac4cc8f8c1d4b01563cc170a803c8
2 Author: Ben Kohler <bkohler <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jan 8 01:01:58 2021 +0000
4 Commit: Ben Kohler <bkohler <AT> gentoo <DOT> org>
5 CommitDate: Fri Jan 8 01:02:34 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee2f492c
7
8 net-wireless/iwd: drop old
9
10 Package-Manager: Portage-3.0.12, Repoman-3.0.2
11 Signed-off-by: Ben Kohler <bkohler <AT> gentoo.org>
12
13 net-wireless/iwd/Manifest | 2 -
14 .../iwd-1.8-eapol-prevent-key-reinstallation.patch | 73 ---------
15 net-wireless/iwd/iwd-1.8-r3.ebuild | 160 ------------------
16 net-wireless/iwd/iwd-1.9-r1.ebuild | 180 ---------------------
17 4 files changed, 415 deletions(-)
18
19 diff --git a/net-wireless/iwd/Manifest b/net-wireless/iwd/Manifest
20 index 69ff7417b70..c483850244a 100644
21 --- a/net-wireless/iwd/Manifest
22 +++ b/net-wireless/iwd/Manifest
23 @@ -1,4 +1,2 @@
24 DIST iwd-1.10.tar.xz 897928 BLAKE2B 1589300201c835b2b14c34a9adefb525173cc2f9c8154f0a5f12da64a1da3d383acf328c5138bb8d4903ff08f339b7d55f02e215896af90aa75d244f61c3de1f SHA512 c128ec764e9d727b4ae1157717826b3219c5d368746f7709a01cb816f077afaa32083052ee2a4ecd09a7fbd36c03ea9ba6bd1a84c2a33210398dd060e9020db5
25 DIST iwd-1.11.tar.xz 907020 BLAKE2B 3b2c0922745c699ba01a2f46061246fbad6e2c7ea1a2f58cd13b5bf2169e9517652740f2dd872b5a274d74a5b8f1962c8e4696eabe5481a0c4783f202217599e SHA512 09c5e5e105b6107d88eff4238bf023f7bf1a408f522b9f84fac890c123bff2e124b937b81e1559db7fe0720f0ac423dc7d37c1b6d502fc4a7b7403fcd798e01d
26 -DIST iwd-1.8.tar.xz 865668 BLAKE2B ba1be5c1658df950fe28deca6b8c3c9482eda260fbd05f721cb34cadcb2852768086e65e7c74940bc6ddd345d1438624b59bdfe4b6a5323dd122a0cd397008d7 SHA512 f1caa330b3ff18b4598efec596a4b9a22887833218a90d19d59717503679eff71fdb990cb63bd74b8f1523197a366cd803d799259e8002e5cde2745b03d51d8e
27 -DIST iwd-1.9.tar.xz 883616 BLAKE2B 57dd4a6e00d73bcfb752e1bd3661e97251d1dab4c05638d148ae7031bff35d606063f79e575ed4d3d3a60ff5514eb3fc340e1eec4c2e7074bf8d6d4b79832f6d SHA512 d8762495f7f5a342476653c0cf64c31b3b41a3064a05c4fcf49b9faf4394b0d7a5db6aae6324896bdc8f7b104697fb4c4315f7073a4fde4fc87f8f55d932538b
28
29 diff --git a/net-wireless/iwd/files/iwd-1.8-eapol-prevent-key-reinstallation.patch b/net-wireless/iwd/files/iwd-1.8-eapol-prevent-key-reinstallation.patch
30 deleted file mode 100644
31 index dceb808297e..00000000000
32 --- a/net-wireless/iwd/files/iwd-1.8-eapol-prevent-key-reinstallation.patch
33 +++ /dev/null
34 @@ -1,73 +0,0 @@
35 -From f22ba5aebb569ca54521afd2babdc1f67e3904ea Mon Sep 17 00:00:00 2001
36 -From: Mathy Vanhoef <Mathy.Vanhoef@××××××××.be>
37 -Date: Wed, 12 Aug 2020 15:17:21 +0400
38 -Subject: eapol: prevent key reinstallation on retransmitted Msg4/4
39 -
40 -Currently an adversary can retransmit EAPOL Msg4/4 to make the AP
41 -reinstall the PTK. Against older Linux kernels this can subsequently
42 -be used to decrypt, replay, and possibly decrypt frames. See the
43 -KRACK attacks research at krackattacks.com for attack scenarios.
44 -In this case no machine-in-the-middle position is needed to trigger
45 -the key reinstallation.
46 -
47 -Fix this by using the ptk_complete boolean to track when the 4-way
48 -handshake has completed (similar to its usage for clients). When
49 -receiving a retransmitted Msg4/4 accept this frame but do not reinstall
50 -the PTK.
51 -
52 -Credits to Chris M. Stone, Sam Thomas, and Tom Chothia of Birmingham
53 -University to help discover this issue.
54 ----
55 - src/eapol.c | 15 ++++++++++++---
56 - 1 file changed, 12 insertions(+), 3 deletions(-)
57 -
58 -diff --git a/src/eapol.c b/src/eapol.c
59 -index b0036c10..e3581cfe 100644
60 ---- a/src/eapol.c
61 -+++ b/src/eapol.c
62 -@@ -1462,7 +1462,6 @@ static void eapol_handle_ptk_2_of_4(struct eapol_sm *sm,
63 - memcpy(sm->handshake->snonce, ek->key_nonce,
64 - sizeof(sm->handshake->snonce));
65 - sm->handshake->have_snonce = true;
66 -- sm->handshake->ptk_complete = true;
67 -
68 - sm->frame_retry = 0;
69 -
70 -@@ -1782,7 +1781,15 @@ static void eapol_handle_ptk_4_of_4(struct eapol_sm *sm,
71 - l_timeout_remove(sm->timeout);
72 - sm->timeout = NULL;
73 -
74 -- handshake_state_install_ptk(sm->handshake);
75 -+ /*
76 -+ * If ptk_complete is set, then we are receiving Message 4 again.
77 -+ * This might be a retransmission, so accept but don't install
78 -+ * the keys again.
79 -+ */
80 -+ if (!sm->handshake->ptk_complete)
81 -+ handshake_state_install_ptk(sm->handshake);
82 -+
83 -+ sm->handshake->ptk_complete = true;
84 - }
85 -
86 - static void eapol_handle_gtk_1_of_2(struct eapol_sm *sm,
87 -@@ -2185,6 +2192,7 @@ static void eapol_auth_key_handle(struct eapol_sm *sm,
88 - size_t frame_len = 4 + L_BE16_TO_CPU(frame->header.packet_len);
89 - const struct eapol_key *ek = eapol_key_validate((const void *) frame,
90 - frame_len, sm->mic_len);
91 -+ uint16_t key_data_len;
92 -
93 - if (!ek)
94 - return;
95 -@@ -2199,7 +2207,8 @@ static void eapol_auth_key_handle(struct eapol_sm *sm,
96 - if (!sm->handshake->have_anonce)
97 - return; /* Not expecting an EAPoL-Key yet */
98 -
99 -- if (!sm->handshake->ptk_complete)
100 -+ key_data_len = EAPOL_KEY_DATA_LEN(ek, sm->mic_len);
101 -+ if (key_data_len != 0)
102 - eapol_handle_ptk_2_of_4(sm, ek);
103 - else
104 - eapol_handle_ptk_4_of_4(sm, ek);
105 ---
106 -cgit 1.2.3-1.el7
107 -
108
109 diff --git a/net-wireless/iwd/iwd-1.8-r3.ebuild b/net-wireless/iwd/iwd-1.8-r3.ebuild
110 deleted file mode 100644
111 index a8c6fbd6ae4..00000000000
112 --- a/net-wireless/iwd/iwd-1.8-r3.ebuild
113 +++ /dev/null
114 @@ -1,160 +0,0 @@
115 -# Copyright 1999-2020 Gentoo Authors
116 -# Distributed under the terms of the GNU General Public License v2
117 -
118 -EAPI=6
119 -inherit flag-o-matic linux-info systemd
120 -
121 -#Set this variable to the required external ell version
122 -ELL_REQ="0.32"
123 -
124 -if [[ ${PV} == *9999* ]]; then
125 - inherit autotools git-r3
126 - IWD_EGIT_REPO_URI="https://git.kernel.org/pub/scm/network/wireless/iwd.git"
127 - ELL_EGIT_REPO_URI="https://git.kernel.org/pub/scm/libs/ell/ell.git"
128 -else
129 - SRC_URI="https://www.kernel.org/pub/linux/network/wireless/${P}.tar.xz"
130 - KEYWORDS="~alpha amd64 arm arm64 ~ia64 ppc ppc64 ~sparc x86"
131 -fi
132 -
133 -DESCRIPTION="Wireless daemon for linux"
134 -HOMEPAGE="https://git.kernel.org/pub/scm/network/wireless/iwd.git/"
135 -
136 -LICENSE="GPL-2"
137 -SLOT="0"
138 -IUSE="+client +crda +monitor ofono wired cpu_flags_x86_aes cpu_flags_x86_ssse3"
139 -
140 -COMMON_DEPEND="sys-apps/dbus
141 - client? ( sys-libs/readline:0= )"
142 -
143 -[[ -z "${ELL_REQ}" ]] || COMMON_DEPEND+=" ~dev-libs/ell-${ELL_REQ}"
144 -
145 -RDEPEND="${COMMON_DEPEND}
146 - net-wireless/wireless-regdb
147 - crda? ( net-wireless/crda )"
148 -
149 -DEPEND="${COMMON_DEPEND}
150 - virtual/pkgconfig"
151 -
152 -[[ ${PV} == *9999* ]] && DEPEND+=" dev-python/docutils"
153 -
154 -PATCHES=( "${FILESDIR}"/iwd-1.8-eapol-prevent-key-reinstallation.patch )
155 -
156 -pkg_setup() {
157 - CONFIG_CHECK="
158 - ~ASYMMETRIC_KEY_TYPE
159 - ~ASYMMETRIC_PUBLIC_KEY_SUBTYPE
160 - ~CFG80211
161 - ~CRYPTO_AES
162 - ~CRYPTO_ARC4
163 - ~CRYPTO_CBC
164 - ~CRYPTO_CMAC
165 - ~CRYPTO_DES
166 - ~CRYPTO_ECB
167 - ~CRYPTO_HMAC
168 - ~CRYPTO_MD4
169 - ~CRYPTO_MD5
170 - ~CRYPTO_RSA
171 - ~CRYPTO_SHA1
172 - ~CRYPTO_SHA256
173 - ~CRYPTO_SHA512
174 - ~CRYPTO_USER_API_HASH
175 - ~CRYPTO_USER_API_SKCIPHER
176 - ~KEY_DH_OPERATIONS
177 - ~PKCS7_MESSAGE_PARSER
178 - ~RFKILL
179 - ~X509_CERTIFICATE_PARSER
180 - "
181 - if use crda;then
182 - CONFIG_CHECK="${CONFIG_CHECK} ~CFG80211_CRDA_SUPPORT"
183 - WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
184 - fi
185 -
186 - if use amd64;then
187 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_DES3_EDE_X86_64"
188 - WARNING_CRYPTO_DES3_EDE_X86_64="CRYPTO_DES3_EDE_X86_64: enable for increased performance"
189 - fi
190 -
191 - if use cpu_flags_x86_aes;then
192 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_AES_NI_INTEL"
193 - WARNING_CRYPTO_AES_NI_INTEL="CRYPTO_AES_NI_INTEL: enable for increased performance"
194 - fi
195 -
196 - if use cpu_flags_x86_ssse3 && use amd64; then
197 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_SHA1_SSSE3 ~CRYPTO_SHA256_SSSE3 ~CRYPTO_SHA512_SSSE3"
198 - WARNING_CRYPTO_SHA1_SSSE3="CRYPTO_SHA1_SSSE3: enable for increased performance"
199 - WARNING_CRYPTO_SHA256_SSSE3="CRYPTO_SHA256_SSSE3: enable for increased performance"
200 - WARNING_CRYPTO_SHA512_SSSE3="CRYPTO_SHA512_SSSE3: enable for increased performance"
201 - fi
202 -
203 - if use kernel_linux && kernel_is -ge 4 20; then
204 - CONFIG_CHECK="${CONFIG_CHECK} ~PKCS8_PRIVATE_KEY_PARSER"
205 - fi
206 -
207 - check_extra_config
208 -
209 - if ! use crda; then
210 - if use kernel_linux && kernel_is -lt 4 15; then
211 - ewarn "POSSIBLE REGULATORY DOMAIN PROBLEM:"
212 - ewarn "Regulatory domain support for kernels older than 4.15 requires crda."
213 - fi
214 - if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
215 - [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* ]]
216 - then
217 - ewarn ""
218 - ewarn "REGULATORY DOMAIN PROBLEM:"
219 - ewarn "With CONFIG_CFG80211=y (built-in), the driver won't be able to load regulatory.db from"
220 - ewarn " /lib/firmware, resulting in broken regulatory domain support. Please set CONFIG_CFG80211=m"
221 - ewarn " or add regulatory.db and regulatory.db.p7s to CONFIG_EXTRA_FIRMWARE."
222 - ewarn ""
223 - fi
224 - fi
225 -}
226 -
227 -src_unpack() {
228 - if [[ ${PV} == *9999* ]] ; then
229 - EGIT_REPO_URI=${IWD_EGIT_REPO_URI} git-r3_src_unpack
230 - EGIT_REPO_URI=${ELL_EGIT_REPO_URI} EGIT_CHECKOUT_DIR=${WORKDIR}/ell git-r3_src_unpack
231 - else
232 - default
233 - fi
234 -}
235 -
236 -src_prepare() {
237 - default
238 - if [[ ${PV} == *9999* ]] ; then
239 - eautoreconf
240 - fi
241 -}
242 -
243 -src_configure() {
244 - append-cflags "-fsigned-char"
245 - local myeconfargs=(
246 - --sysconfdir="${EPREFIX}"/etc/iwd --localstatedir="${EPREFIX}"/var
247 - $(use_enable client)
248 - $(use_enable monitor)
249 - $(use_enable ofono)
250 - $(use_enable wired)
251 - --enable-systemd-service
252 - --with-systemd-unitdir="$(systemd_get_systemunitdir)"
253 - --with-systemd-modloaddir="${EPREFIX}/usr/lib/modules-load.d"
254 - --with-systemd-networkdir="$(systemd_get_utildir)/network"
255 - )
256 - [[ ${PV} == *9999* ]] || myeconfargs+=(--enable-external-ell)
257 - econf "${myeconfargs[@]}"
258 -}
259 -
260 -src_install() {
261 - default
262 - keepdir /var/lib/${PN}
263 -
264 - newinitd "${FILESDIR}/iwd.initd-r1" iwd
265 -
266 - if use wired;then
267 - newinitd "${FILESDIR}/ead.initd" ead
268 - fi
269 -
270 - if [[ ${PV} == *9999* ]] ; then
271 - exeinto /usr/share/iwd/scripts/
272 - doexe test/*
273 - fi
274 -}
275
276 diff --git a/net-wireless/iwd/iwd-1.9-r1.ebuild b/net-wireless/iwd/iwd-1.9-r1.ebuild
277 deleted file mode 100644
278 index c170b16a7f3..00000000000
279 --- a/net-wireless/iwd/iwd-1.9-r1.ebuild
280 +++ /dev/null
281 @@ -1,180 +0,0 @@
282 -# Copyright 1999-2020 Gentoo Authors
283 -# Distributed under the terms of the GNU General Public License v2
284 -
285 -EAPI=6
286 -inherit flag-o-matic linux-info systemd
287 -
288 -#Set this variable to the required external ell version
289 -ELL_REQ="0.33"
290 -
291 -if [[ ${PV} == *9999* ]]; then
292 - inherit autotools git-r3
293 - IWD_EGIT_REPO_URI="https://git.kernel.org/pub/scm/network/wireless/iwd.git"
294 - ELL_EGIT_REPO_URI="https://git.kernel.org/pub/scm/libs/ell/ell.git"
295 -else
296 - SRC_URI="https://www.kernel.org/pub/linux/network/wireless/${P}.tar.xz"
297 - KEYWORDS="~alpha amd64 arm arm64 ~ia64 ppc ~ppc64 ~sparc x86"
298 -fi
299 -
300 -DESCRIPTION="Wireless daemon for linux"
301 -HOMEPAGE="https://git.kernel.org/pub/scm/network/wireless/iwd.git/"
302 -
303 -LICENSE="GPL-2"
304 -SLOT="0"
305 -IUSE="+client +crda +monitor ofono wired cpu_flags_x86_aes cpu_flags_x86_ssse3
306 -standalone systemd"
307 -
308 -COMMON_DEPEND="
309 - sys-apps/dbus
310 - client? ( sys-libs/readline:0= )
311 -"
312 -
313 -[[ -z "${ELL_REQ}" ]] || COMMON_DEPEND+=" ~dev-libs/ell-${ELL_REQ}"
314 -
315 -RDEPEND="
316 - ${COMMON_DEPEND}
317 - net-wireless/wireless-regdb
318 - crda? ( net-wireless/crda )
319 - standalone? (
320 - systemd? ( sys-apps/systemd )
321 - !systemd? ( virtual/resolvconf )
322 - )
323 -"
324 -
325 -DEPEND="
326 - ${COMMON_DEPEND}
327 - virtual/pkgconfig
328 -"
329 -
330 -[[ ${PV} == *9999* ]] && DEPEND+=" dev-python/docutils"
331 -
332 -pkg_setup() {
333 - CONFIG_CHECK="
334 - ~ASYMMETRIC_KEY_TYPE
335 - ~ASYMMETRIC_PUBLIC_KEY_SUBTYPE
336 - ~CFG80211
337 - ~CRYPTO_AES
338 - ~CRYPTO_ARC4
339 - ~CRYPTO_CBC
340 - ~CRYPTO_CMAC
341 - ~CRYPTO_DES
342 - ~CRYPTO_ECB
343 - ~CRYPTO_HMAC
344 - ~CRYPTO_MD4
345 - ~CRYPTO_MD5
346 - ~CRYPTO_RSA
347 - ~CRYPTO_SHA1
348 - ~CRYPTO_SHA256
349 - ~CRYPTO_SHA512
350 - ~CRYPTO_USER_API_HASH
351 - ~CRYPTO_USER_API_SKCIPHER
352 - ~KEY_DH_OPERATIONS
353 - ~PKCS7_MESSAGE_PARSER
354 - ~RFKILL
355 - ~X509_CERTIFICATE_PARSER
356 - "
357 - if use crda;then
358 - CONFIG_CHECK="${CONFIG_CHECK} ~CFG80211_CRDA_SUPPORT"
359 - WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
360 - fi
361 -
362 - if use amd64;then
363 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_DES3_EDE_X86_64"
364 - WARNING_CRYPTO_DES3_EDE_X86_64="CRYPTO_DES3_EDE_X86_64: enable for increased performance"
365 - fi
366 -
367 - if use cpu_flags_x86_aes;then
368 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_AES_NI_INTEL"
369 - WARNING_CRYPTO_AES_NI_INTEL="CRYPTO_AES_NI_INTEL: enable for increased performance"
370 - fi
371 -
372 - if use cpu_flags_x86_ssse3 && use amd64; then
373 - CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_SHA1_SSSE3 ~CRYPTO_SHA256_SSSE3 ~CRYPTO_SHA512_SSSE3"
374 - WARNING_CRYPTO_SHA1_SSSE3="CRYPTO_SHA1_SSSE3: enable for increased performance"
375 - WARNING_CRYPTO_SHA256_SSSE3="CRYPTO_SHA256_SSSE3: enable for increased performance"
376 - WARNING_CRYPTO_SHA512_SSSE3="CRYPTO_SHA512_SSSE3: enable for increased performance"
377 - fi
378 -
379 - if use kernel_linux && kernel_is -ge 4 20; then
380 - CONFIG_CHECK="${CONFIG_CHECK} ~PKCS8_PRIVATE_KEY_PARSER"
381 - fi
382 -
383 - check_extra_config
384 -
385 - if ! use crda; then
386 - if use kernel_linux && kernel_is -lt 4 15; then
387 - ewarn "POSSIBLE REGULATORY DOMAIN PROBLEM:"
388 - ewarn "Regulatory domain support for kernels older than 4.15 requires crda."
389 - fi
390 - if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
391 - [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* ]]
392 - then
393 - ewarn ""
394 - ewarn "REGULATORY DOMAIN PROBLEM:"
395 - ewarn "With CONFIG_CFG80211=y (built-in), the driver won't be able to load regulatory.db from"
396 - ewarn " /lib/firmware, resulting in broken regulatory domain support. Please set CONFIG_CFG80211=m"
397 - ewarn " or add regulatory.db and regulatory.db.p7s to CONFIG_EXTRA_FIRMWARE."
398 - ewarn ""
399 - fi
400 - fi
401 -}
402 -
403 -src_unpack() {
404 - if [[ ${PV} == *9999* ]] ; then
405 - EGIT_REPO_URI=${IWD_EGIT_REPO_URI} git-r3_src_unpack
406 - EGIT_REPO_URI=${ELL_EGIT_REPO_URI} EGIT_CHECKOUT_DIR=${WORKDIR}/ell git-r3_src_unpack
407 - else
408 - default
409 - fi
410 -}
411 -
412 -src_prepare() {
413 - default
414 - if [[ ${PV} == *9999* ]] ; then
415 - eautoreconf
416 - fi
417 -}
418 -
419 -src_configure() {
420 - append-cflags "-fsigned-char"
421 - local myeconfargs=(
422 - --sysconfdir="${EPREFIX}"/etc/iwd --localstatedir="${EPREFIX}"/var
423 - $(use_enable client)
424 - $(use_enable monitor)
425 - $(use_enable ofono)
426 - $(use_enable wired)
427 - --enable-systemd-service
428 - --with-systemd-unitdir="$(systemd_get_systemunitdir)"
429 - --with-systemd-modloaddir="${EPREFIX}/usr/lib/modules-load.d"
430 - --with-systemd-networkdir="$(systemd_get_utildir)/network"
431 - )
432 - [[ ${PV} == *9999* ]] || myeconfargs+=(--enable-external-ell)
433 - econf "${myeconfargs[@]}"
434 -}
435 -
436 -src_install() {
437 - default
438 - keepdir /var/lib/${PN}
439 -
440 - newinitd "${FILESDIR}/iwd.initd-r1" iwd
441 -
442 - if use wired;then
443 - newinitd "${FILESDIR}/ead.initd" ead
444 - fi
445 -
446 - if [[ ${PV} == *9999* ]] ; then
447 - exeinto /usr/share/iwd/scripts/
448 - doexe test/*
449 - fi
450 -
451 - if use standalone ; then
452 - local iwdconf="${ED}/etc/iwd/main.conf"
453 - dodir /etc/iwd
454 - echo "[General]" > "${iwdconf}"
455 - echo "EnableNetworkConfiguration=true" >> "${iwdconf}"
456 - echo "[Network]" >> "${iwdconf}"
457 - echo "NameResolvingService=$(usex systemd systemd resolvconf)" >> "${iwdconf}"
458 - dodir /etc/conf.d
459 - echo "rc_provide=\"net\"" > ${ED}/etc/conf.d/iwd
460 - fi
461 -}