af_iucv: New error return codes for connect()
If the iucv_path_connect() call fails then return an error code that corresponds to the iucv_path_connect() failure condition; instead of returning -ECONNREFUSED for any failure. This helps to improve error handling for user space applications (e.g. inform the user that the z/VM guest is not authorized to connect to other guest virtual machines). The error return codes are based on those described in connect(2). Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
48e4cc777c
commit
55cdea9ed9
|
@ -494,7 +494,21 @@ static int iucv_sock_connect(struct socket *sock, struct sockaddr *addr,
|
|||
if (err) {
|
||||
iucv_path_free(iucv->path);
|
||||
iucv->path = NULL;
|
||||
err = -ECONNREFUSED;
|
||||
switch (err) {
|
||||
case 0x0b: /* Target communicator is not logged on */
|
||||
err = -ENETUNREACH;
|
||||
break;
|
||||
case 0x0d: /* Max connections for this guest exceeded */
|
||||
case 0x0e: /* Max connections for target guest exceeded */
|
||||
err = -EAGAIN;
|
||||
break;
|
||||
case 0x0f: /* Missing IUCV authorization */
|
||||
err = -EACCES;
|
||||
break;
|
||||
default:
|
||||
err = -ECONNREFUSED;
|
||||
break;
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue