diff options
-rw-r--r-- | net/iucv/af_iucv.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index af3192d2a5a3..1077bc4e6e2a 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c | |||
@@ -494,7 +494,21 @@ static int iucv_sock_connect(struct socket *sock, struct sockaddr *addr, | |||
494 | if (err) { | 494 | if (err) { |
495 | iucv_path_free(iucv->path); | 495 | iucv_path_free(iucv->path); |
496 | iucv->path = NULL; | 496 | iucv->path = NULL; |
497 | err = -ECONNREFUSED; | 497 | switch (err) { |
498 | case 0x0b: /* Target communicator is not logged on */ | ||
499 | err = -ENETUNREACH; | ||
500 | break; | ||
501 | case 0x0d: /* Max connections for this guest exceeded */ | ||
502 | case 0x0e: /* Max connections for target guest exceeded */ | ||
503 | err = -EAGAIN; | ||
504 | break; | ||
505 | case 0x0f: /* Missing IUCV authorization */ | ||
506 | err = -EACCES; | ||
507 | break; | ||
508 | default: | ||
509 | err = -ECONNREFUSED; | ||
510 | break; | ||
511 | } | ||
498 | goto done; | 512 | goto done; |
499 | } | 513 | } |
500 | 514 | ||