RADIUS: Add EACCES to list of recognized send() errno values
authorJouni Malinen <j@w1.fi>
Thu, 24 Dec 2015 10:43:05 +0000 (12:43 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 24 Dec 2015 10:43:05 +0000 (12:43 +0200)
This allows RADIUS failover to be performed if send() return EACCES
error which is what happens after a recent Linux kernel commit
0315e382704817b279e5693dca8ab9d89aa20b3f ('net: Fix behaviour of
unreachable, blackhole and prohibit') for a local sender when route type
is prohibit.

This fixes the hwsim test case radius_failover when running against a
kernel build that includes that commit.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/radius/radius_client.c

index 0bcdb45..b24bbf8 100644 (file)
@@ -308,7 +308,7 @@ static int radius_client_handle_send_error(struct radius_client_data *radius,
        int _errno = errno;
        wpa_printf(MSG_INFO, "send[RADIUS,s=%d]: %s", s, strerror(errno));
        if (_errno == ENOTCONN || _errno == EDESTADDRREQ || _errno == EINVAL ||
-           _errno == EBADF || _errno == ENETUNREACH) {
+           _errno == EBADF || _errno == ENETUNREACH || _errno == EACCES) {
                hostapd_logger(radius->ctx, NULL, HOSTAPD_MODULE_RADIUS,
                               HOSTAPD_LEVEL_INFO,
                               "Send failed - maybe interface status changed -"