diff options
| author | deraadt <> | 1999-12-16 21:30:34 +0000 |
|---|---|---|
| committer | deraadt <> | 1999-12-16 21:30:34 +0000 |
| commit | 4bbe99685ce9ae55f318adc00406e0caf4432bdf (patch) | |
| tree | 8382773087d5ec817a48ab45a39f045c3d6f5539 /src/lib/libc/net/rcmd.c | |
| parent | ac10646d45729b02230d6ba16729bb91850b3186 (diff) | |
| download | openbsd-4bbe99685ce9ae55f318adc00406e0caf4432bdf.tar.gz openbsd-4bbe99685ce9ae55f318adc00406e0caf4432bdf.tar.bz2 openbsd-4bbe99685ce9ae55f318adc00406e0caf4432bdf.zip | |
rresvport_af() and bindresvport_af()
Diffstat (limited to 'src/lib/libc/net/rcmd.c')
| -rw-r--r-- | src/lib/libc/net/rcmd.c | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/src/lib/libc/net/rcmd.c b/src/lib/libc/net/rcmd.c index c933f5b447..bd920faadb 100644 --- a/src/lib/libc/net/rcmd.c +++ b/src/lib/libc/net/rcmd.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | */ | 34 | */ |
| 35 | 35 | ||
| 36 | #if defined(LIBC_SCCS) && !defined(lint) | 36 | #if defined(LIBC_SCCS) && !defined(lint) |
| 37 | static char *rcsid = "$OpenBSD: rcmd.c,v 1.31 1998/03/19 00:30:05 millert Exp $"; | 37 | static char *rcsid = "$OpenBSD: rcmd.c,v 1.32 1999/12/16 21:30:34 deraadt Exp $"; |
| 38 | #endif /* LIBC_SCCS and not lint */ | 38 | #endif /* LIBC_SCCS and not lint */ |
| 39 | 39 | ||
| 40 | #include <sys/param.h> | 40 | #include <sys/param.h> |
| @@ -253,38 +253,6 @@ bad: | |||
| 253 | return (-1); | 253 | return (-1); |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | int | ||
| 257 | rresvport(alport) | ||
| 258 | int *alport; | ||
| 259 | { | ||
| 260 | struct sockaddr_in sin; | ||
| 261 | int s; | ||
| 262 | |||
| 263 | bzero(&sin, sizeof sin); | ||
| 264 | sin.sin_len = sizeof(struct sockaddr_in); | ||
| 265 | sin.sin_family = AF_INET; | ||
| 266 | sin.sin_addr.s_addr = INADDR_ANY; | ||
| 267 | s = socket(AF_INET, SOCK_STREAM, 0); | ||
| 268 | if (s < 0) | ||
| 269 | return (-1); | ||
| 270 | sin.sin_port = htons((in_port_t)*alport); | ||
| 271 | if (*alport < IPPORT_RESERVED - 1) { | ||
| 272 | if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) >= 0) | ||
| 273 | return (s); | ||
| 274 | if (errno != EADDRINUSE) { | ||
| 275 | (void)close(s); | ||
| 276 | return (-1); | ||
| 277 | } | ||
| 278 | } | ||
| 279 | sin.sin_port = 0; | ||
| 280 | if (bindresvport(s, &sin) == -1) { | ||
| 281 | (void)close(s); | ||
| 282 | return (-1); | ||
| 283 | } | ||
| 284 | *alport = (int)ntohs(sin.sin_port); | ||
| 285 | return (s); | ||
| 286 | } | ||
| 287 | |||
| 288 | int __check_rhosts_file = 1; | 256 | int __check_rhosts_file = 1; |
| 289 | char *__rcmd_errstr; | 257 | char *__rcmd_errstr; |
| 290 | 258 | ||
