diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-06 18:36:50 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-06 18:36:50 +0000 |
commit | 3538b9a8822421b7c8596a33a917dcf2f99c92b7 (patch) | |
tree | 768c23fe79bb81583de7376a4d744632d888d303 /networking/inetd.c | |
parent | 5d725462d44268f9a86030daaa6f6396d32f796c (diff) | |
download | busybox-w32-3538b9a8822421b7c8596a33a917dcf2f99c92b7.tar.gz busybox-w32-3538b9a8822421b7c8596a33a917dcf2f99c92b7.tar.bz2 busybox-w32-3538b9a8822421b7c8596a33a917dcf2f99c92b7.zip |
Implement optional syslog logging using ordinary
bb_xx_msg calls, and convert networking/* to it.
The rest of bbox will be converted gradually.
Diffstat (limited to 'networking/inetd.c')
-rw-r--r-- | networking/inetd.c | 141 |
1 files changed, 66 insertions, 75 deletions
diff --git a/networking/inetd.c b/networking/inetd.c index 9947f01ae..e47022350 100644 --- a/networking/inetd.c +++ b/networking/inetd.c | |||
@@ -311,18 +311,19 @@ static FILE *fconfig; | |||
311 | static char line[1024]; | 311 | static char line[1024]; |
312 | static char *defhost; | 312 | static char *defhost; |
313 | 313 | ||
314 | static char *newstr (char *cp) | 314 | /* xstrdup(NULL) returns NULL, but this one |
315 | * will return newly-allocated "" if called with NULL arg | ||
316 | * TODO: audit whether this makes any real difference | ||
317 | */ | ||
318 | static char *xxstrdup (char *cp) | ||
315 | { | 319 | { |
316 | if ((cp = strdup (cp ? cp : ""))) | 320 | return xstrdup (cp ? cp : ""); |
317 | return (cp); | ||
318 | syslog (LOG_ERR, "strdup: %m"); | ||
319 | exit (1); | ||
320 | } | 321 | } |
321 | 322 | ||
322 | static int setconfig (void) | 323 | static int setconfig (void) |
323 | { | 324 | { |
324 | free (defhost); | 325 | free (defhost); |
325 | defhost = newstr ("*"); | 326 | defhost = xstrdup ("*"); |
326 | if (fconfig != NULL) { | 327 | if (fconfig != NULL) { |
327 | fseek (fconfig, 0L, SEEK_SET); | 328 | fseek (fconfig, 0L, SEEK_SET); |
328 | return (1); | 329 | return (1); |
@@ -350,12 +351,12 @@ static void register_rpc (servtab_t *sep) | |||
350 | socklen_t size; | 351 | socklen_t size; |
351 | 352 | ||
352 | if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) { | 353 | if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) { |
353 | syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto); | 354 | bb_perror_msg ("%s: getproto", sep->se_proto); |
354 | return; | 355 | return; |
355 | } | 356 | } |
356 | size = sizeof ir_sin; | 357 | size = sizeof ir_sin; |
357 | if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &size) < 0) { | 358 | if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &size) < 0) { |
358 | syslog (LOG_ERR, "%s/%s: getsockname: %m", | 359 | bb_perror_msg ("%s/%s: getsockname", |
359 | sep->se_service, sep->se_proto); | 360 | sep->se_service, sep->se_proto); |
360 | return; | 361 | return; |
361 | } | 362 | } |
@@ -363,7 +364,7 @@ static void register_rpc (servtab_t *sep) | |||
363 | for (n = sep->se_rpcversl; n <= sep->se_rpcversh; n++) { | 364 | for (n = sep->se_rpcversl; n <= sep->se_rpcversh; n++) { |
364 | (void) pmap_unset (sep->se_rpcprog, n); | 365 | (void) pmap_unset (sep->se_rpcprog, n); |
365 | if (!pmap_set (sep->se_rpcprog, n, pp->p_proto, ntohs (ir_sin.sin_port))) | 366 | if (!pmap_set (sep->se_rpcprog, n, pp->p_proto, ntohs (ir_sin.sin_port))) |
366 | syslog (LOG_ERR, "%s %s: pmap_set: %u %u %u %u: %m", | 367 | bb_perror_msg ("%s %s: pmap_set: %u %u %u %u", |
367 | sep->se_service, sep->se_proto, | 368 | sep->se_service, sep->se_proto, |
368 | sep->se_rpcprog, n, pp->p_proto, ntohs (ir_sin.sin_port)); | 369 | sep->se_rpcprog, n, pp->p_proto, ntohs (ir_sin.sin_port)); |
369 | } | 370 | } |
@@ -375,7 +376,7 @@ static void unregister_rpc (servtab_t *sep) | |||
375 | 376 | ||
376 | for (n = sep->se_rpcversl; n <= sep->se_rpcversh; n++) { | 377 | for (n = sep->se_rpcversl; n <= sep->se_rpcversh; n++) { |
377 | if (!pmap_unset (sep->se_rpcprog, n)) | 378 | if (!pmap_unset (sep->se_rpcprog, n)) |
378 | syslog (LOG_ERR, "pmap_unset(%u, %u)", sep->se_rpcprog, n); | 379 | bb_error_msg ("pmap_unset(%u, %u)", sep->se_rpcprog, n); |
379 | } | 380 | } |
380 | } | 381 | } |
381 | #endif /* CONFIG_FEATURE_INETD_RPC */ | 382 | #endif /* CONFIG_FEATURE_INETD_RPC */ |
@@ -401,19 +402,19 @@ static int bump_nofile (void) | |||
401 | struct rlimit rl; | 402 | struct rlimit rl; |
402 | 403 | ||
403 | if (getrlimit (RLIMIT_NOFILE, &rl) < 0) { | 404 | if (getrlimit (RLIMIT_NOFILE, &rl) < 0) { |
404 | syslog (LOG_ERR, "getrlimit: %m"); | 405 | bb_perror_msg ("getrlimit"); |
405 | return -1; | 406 | return -1; |
406 | } | 407 | } |
407 | rl.rlim_cur = MIN (rl.rlim_max, rl.rlim_cur + FD_CHUNK); | 408 | rl.rlim_cur = MIN (rl.rlim_max, rl.rlim_cur + FD_CHUNK); |
408 | rl.rlim_cur = MIN (FD_SETSIZE, rl.rlim_cur + FD_CHUNK); | 409 | rl.rlim_cur = MIN (FD_SETSIZE, rl.rlim_cur + FD_CHUNK); |
409 | if (rl.rlim_cur <= rlim_ofile_cur) { | 410 | if (rl.rlim_cur <= rlim_ofile_cur) { |
410 | syslog (LOG_ERR, "bump_nofile: cannot extend file limit, max = %d", | 411 | bb_error_msg ("bump_nofile: cannot extend file limit, max = %d", |
411 | (int) rl.rlim_cur); | 412 | (int) rl.rlim_cur); |
412 | return -1; | 413 | return -1; |
413 | } | 414 | } |
414 | 415 | ||
415 | if (setrlimit (RLIMIT_NOFILE, &rl) < 0) { | 416 | if (setrlimit (RLIMIT_NOFILE, &rl) < 0) { |
416 | syslog (LOG_ERR, "setrlimit: %m"); | 417 | bb_perror_msg ("setrlimit"); |
417 | return -1; | 418 | return -1; |
418 | } | 419 | } |
419 | 420 | ||
@@ -427,13 +428,13 @@ static void setup (servtab_t *sep) | |||
427 | int r; | 428 | int r; |
428 | 429 | ||
429 | if ((sep->se_fd = socket (sep->se_family, sep->se_socktype, 0)) < 0) { | 430 | if ((sep->se_fd = socket (sep->se_family, sep->se_socktype, 0)) < 0) { |
430 | syslog (LOG_ERR, "%s/%s: socket: %m", sep->se_service, sep->se_proto); | 431 | bb_perror_msg ("%s/%s: socket", sep->se_service, sep->se_proto); |
431 | return; | 432 | return; |
432 | } | 433 | } |
433 | #define turnon(fd, opt) \ | 434 | #define turnon(fd, opt) \ |
434 | setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on)) | 435 | setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on)) |
435 | if (turnon (sep->se_fd, SO_REUSEADDR) < 0) | 436 | if (turnon (sep->se_fd, SO_REUSEADDR) < 0) |
436 | syslog (LOG_ERR, "setsockopt (SO_REUSEADDR): %m"); | 437 | bb_perror_msg ("setsockopt (SO_REUSEADDR)"); |
437 | #undef turnon | 438 | #undef turnon |
438 | 439 | ||
439 | #ifdef CONFIG_FEATURE_INETD_RPC | 440 | #ifdef CONFIG_FEATURE_INETD_RPC |
@@ -467,7 +468,7 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on)) | |||
467 | #endif | 468 | #endif |
468 | r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size); | 469 | r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size); |
469 | if (r < 0) { | 470 | if (r < 0) { |
470 | syslog (LOG_ERR, "%s/%s (%d): bind: %m", | 471 | bb_perror_msg ("%s/%s (%d): bind", |
471 | sep->se_service, sep->se_proto, sep->se_ctrladdr.sa_family); | 472 | sep->se_service, sep->se_proto, sep->se_ctrladdr.sa_family); |
472 | close (sep->se_fd); | 473 | close (sep->se_fd); |
473 | sep->se_fd = -1; | 474 | sep->se_fd = -1; |
@@ -510,7 +511,7 @@ static char *skip (char **cpp) /* int report; */ | |||
510 | /* erp: */ | 511 | /* erp: */ |
511 | if (*cpp == NULL) { | 512 | if (*cpp == NULL) { |
512 | /* if (report) */ | 513 | /* if (report) */ |
513 | /* syslog(LOG_ERR, "syntax error in inetd config file"); */ | 514 | /* bb_error_msg ("syntax error in inetd config file"); */ |
514 | return (NULL); | 515 | return (NULL); |
515 | } | 516 | } |
516 | 517 | ||
@@ -543,14 +544,7 @@ again: | |||
543 | 544 | ||
544 | static servtab_t *new_servtab(void) | 545 | static servtab_t *new_servtab(void) |
545 | { | 546 | { |
546 | servtab_t *sep; | 547 | return xmalloc (sizeof (servtab_t)); |
547 | |||
548 | sep = (servtab_t *) malloc (sizeof (servtab_t)); | ||
549 | if (sep == NULL) { | ||
550 | syslog (LOG_ERR, bb_msg_memory_exhausted); | ||
551 | exit (1); | ||
552 | } | ||
553 | return sep; | ||
554 | } | 548 | } |
555 | 549 | ||
556 | static servtab_t *dupconfig (servtab_t *sep) | 550 | static servtab_t *dupconfig (servtab_t *sep) |
@@ -560,26 +554,25 @@ static servtab_t *dupconfig (servtab_t *sep) | |||
560 | 554 | ||
561 | newtab = new_servtab(); | 555 | newtab = new_servtab(); |
562 | memset (newtab, 0, sizeof (servtab_t)); | 556 | memset (newtab, 0, sizeof (servtab_t)); |
563 | newtab->se_service = sep->se_service ? newstr (sep->se_service) : NULL; | 557 | newtab->se_service = xstrdup (sep->se_service); |
564 | newtab->se_socktype = sep->se_socktype; | 558 | newtab->se_socktype = sep->se_socktype; |
565 | newtab->se_family = sep->se_family; | 559 | newtab->se_family = sep->se_family; |
566 | newtab->se_proto = sep->se_proto ? newstr (sep->se_proto) : NULL; | 560 | newtab->se_proto = xstrdup (sep->se_proto); |
567 | #ifdef CONFIG_FEATURE_INETD_RPC | 561 | #ifdef CONFIG_FEATURE_INETD_RPC |
568 | newtab->se_rpcprog = sep->se_rpcprog; | 562 | newtab->se_rpcprog = sep->se_rpcprog; |
569 | newtab->se_rpcversl = sep->se_rpcversl; | 563 | newtab->se_rpcversl = sep->se_rpcversl; |
570 | newtab->se_rpcversh = sep->se_rpcversh; | 564 | newtab->se_rpcversh = sep->se_rpcversh; |
571 | #endif | 565 | #endif |
572 | newtab->se_wait = sep->se_wait; | 566 | newtab->se_wait = sep->se_wait; |
573 | newtab->se_user = sep->se_user ? newstr (sep->se_user) : NULL; | 567 | newtab->se_user = xstrdup (sep->se_user); |
574 | newtab->se_group = sep->se_group ? newstr (sep->se_group) : NULL; | 568 | newtab->se_group = xstrdup (sep->se_group); |
575 | #ifdef INETD_FEATURE_ENABLED | 569 | #ifdef INETD_FEATURE_ENABLED |
576 | newtab->se_bi = sep->se_bi; | 570 | newtab->se_bi = sep->se_bi; |
577 | #endif | 571 | #endif |
578 | newtab->se_server = sep->se_server ? newstr (sep->se_server) : 0; | 572 | newtab->se_server = xstrdup (sep->se_server); |
579 | 573 | ||
580 | for (argc = 0; argc <= MAXARGV; argc++) | 574 | for (argc = 0; argc <= MAXARGV; argc++) |
581 | newtab->se_argv[argc] = sep->se_argv[argc] ? | 575 | newtab->se_argv[argc] = xstrdup (sep->se_argv[argc]); |
582 | newstr (sep->se_argv[argc]) : NULL; | ||
583 | newtab->se_max = sep->se_max; | 576 | newtab->se_max = sep->se_max; |
584 | 577 | ||
585 | return (newtab); | 578 | return (newtab); |
@@ -617,7 +610,7 @@ more: | |||
617 | hostdelim = strrchr (arg, ':'); | 610 | hostdelim = strrchr (arg, ':'); |
618 | if (hostdelim) { | 611 | if (hostdelim) { |
619 | *hostdelim = '\0'; | 612 | *hostdelim = '\0'; |
620 | sep->se_hostaddr = newstr (arg); | 613 | sep->se_hostaddr = xstrdup (arg); |
621 | arg = hostdelim + 1; | 614 | arg = hostdelim + 1; |
622 | /* | 615 | /* |
623 | * If the line is of the form `host:', then just change the | 616 | * If the line is of the form `host:', then just change the |
@@ -632,9 +625,9 @@ more: | |||
632 | } | 625 | } |
633 | } | 626 | } |
634 | } else | 627 | } else |
635 | sep->se_hostaddr = newstr (defhost); | 628 | sep->se_hostaddr = xxstrdup (defhost); |
636 | 629 | ||
637 | sep->se_service = newstr (arg); | 630 | sep->se_service = xxstrdup (arg); |
638 | arg = skip (&cp); | 631 | arg = skip (&cp); |
639 | 632 | ||
640 | if (strcmp (arg, "stream") == 0) | 633 | if (strcmp (arg, "stream") == 0) |
@@ -650,7 +643,7 @@ more: | |||
650 | else | 643 | else |
651 | sep->se_socktype = -1; | 644 | sep->se_socktype = -1; |
652 | 645 | ||
653 | sep->se_proto = newstr (skip (&cp)); | 646 | sep->se_proto = xxstrdup (skip (&cp)); |
654 | 647 | ||
655 | if (strcmp (sep->se_proto, "unix") == 0) { | 648 | if (strcmp (sep->se_proto, "unix") == 0) { |
656 | sep->se_family = AF_UNIX; | 649 | sep->se_family = AF_UNIX; |
@@ -660,7 +653,7 @@ more: | |||
660 | #ifdef CONFIG_FEATURE_IPV6 | 653 | #ifdef CONFIG_FEATURE_IPV6 |
661 | sep->se_family = AF_INET6; | 654 | sep->se_family = AF_INET6; |
662 | #else | 655 | #else |
663 | syslog (LOG_ERR, "%s: IPV6 not supported", sep->se_proto); | 656 | bb_error_msg ("%s: IPV6 not supported", sep->se_proto); |
664 | #endif | 657 | #endif |
665 | if (strncmp (sep->se_proto, "rpc/", 4) == 0) { | 658 | if (strncmp (sep->se_proto, "rpc/", 4) == 0) { |
666 | #ifdef CONFIG_FEATURE_INETD_RPC | 659 | #ifdef CONFIG_FEATURE_INETD_RPC |
@@ -669,14 +662,14 @@ more: | |||
669 | 662 | ||
670 | p = strchr (sep->se_service, '/'); | 663 | p = strchr (sep->se_service, '/'); |
671 | if (p == 0) { | 664 | if (p == 0) { |
672 | syslog (LOG_ERR, "%s: no rpc version", sep->se_service); | 665 | bb_error_msg ("%s: no rpc version", sep->se_service); |
673 | goto more; | 666 | goto more; |
674 | } | 667 | } |
675 | *p++ = '\0'; | 668 | *p++ = '\0'; |
676 | l = strtol (p, &ccp, 0); | 669 | l = strtol (p, &ccp, 0); |
677 | if (ccp == p || l < 0 || l > INT_MAX) { | 670 | if (ccp == p || l < 0 || l > INT_MAX) { |
678 | badafterall: | 671 | badafterall: |
679 | syslog (LOG_ERR, "%s/%s: bad rpc version", sep->se_service, p); | 672 | bb_error_msg ("%s/%s: bad rpc version", sep->se_service, p); |
680 | goto more; | 673 | goto more; |
681 | } | 674 | } |
682 | sep->se_rpcversl = sep->se_rpcversh = l; | 675 | sep->se_rpcversl = sep->se_rpcversh = l; |
@@ -689,7 +682,7 @@ more: | |||
689 | } else if (*ccp != '\0') | 682 | } else if (*ccp != '\0') |
690 | goto badafterall; | 683 | goto badafterall; |
691 | #else | 684 | #else |
692 | syslog (LOG_ERR, "%s: rpc services not supported", sep->se_service); | 685 | bb_error_msg ("%s: rpc services not supported", sep->se_service); |
693 | #endif | 686 | #endif |
694 | } | 687 | } |
695 | } | 688 | } |
@@ -708,18 +701,18 @@ more: | |||
708 | sep->se_wait = strcmp (arg, "wait") == 0; | 701 | sep->se_wait = strcmp (arg, "wait") == 0; |
709 | /* if ((arg = skip(&cp, 1)) == NULL) */ | 702 | /* if ((arg = skip(&cp, 1)) == NULL) */ |
710 | /* goto more; */ | 703 | /* goto more; */ |
711 | sep->se_user = newstr (skip (&cp)); | 704 | sep->se_user = xxstrdup (skip (&cp)); |
712 | arg = strchr (sep->se_user, '.'); | 705 | arg = strchr (sep->se_user, '.'); |
713 | if (arg == NULL) | 706 | if (arg == NULL) |
714 | arg = strchr (sep->se_user, ':'); | 707 | arg = strchr (sep->se_user, ':'); |
715 | if (arg) { | 708 | if (arg) { |
716 | *arg++ = '\0'; | 709 | *arg++ = '\0'; |
717 | sep->se_group = newstr (arg); | 710 | sep->se_group = xstrdup (arg); |
718 | } | 711 | } |
719 | /* if ((arg = skip(&cp, 1)) == NULL) */ | 712 | /* if ((arg = skip(&cp, 1)) == NULL) */ |
720 | /* goto more; */ | 713 | /* goto more; */ |
721 | 714 | ||
722 | sep->se_server = newstr (skip (&cp)); | 715 | sep->se_server = xxstrdup (skip (&cp)); |
723 | if (strcmp (sep->se_server, "internal") == 0) { | 716 | if (strcmp (sep->se_server, "internal") == 0) { |
724 | #ifdef INETD_FEATURE_ENABLED | 717 | #ifdef INETD_FEATURE_ENABLED |
725 | const struct builtin *bi; | 718 | const struct builtin *bi; |
@@ -729,13 +722,13 @@ more: | |||
729 | strcmp (bi->bi_service, sep->se_service) == 0) | 722 | strcmp (bi->bi_service, sep->se_service) == 0) |
730 | break; | 723 | break; |
731 | if (bi->bi_service == 0) { | 724 | if (bi->bi_service == 0) { |
732 | syslog (LOG_ERR, "internal service %s unknown", sep->se_service); | 725 | bb_error_msg ("internal service %s unknown", sep->se_service); |
733 | goto more; | 726 | goto more; |
734 | } | 727 | } |
735 | sep->se_bi = bi; | 728 | sep->se_bi = bi; |
736 | sep->se_wait = bi->bi_wait; | 729 | sep->se_wait = bi->bi_wait; |
737 | #else | 730 | #else |
738 | syslog (LOG_ERR, "internal service %s unknown", sep->se_service); | 731 | bb_perror_msg ("internal service %s unknown", sep->se_service); |
739 | goto more; | 732 | goto more; |
740 | #endif | 733 | #endif |
741 | } | 734 | } |
@@ -746,7 +739,7 @@ more: | |||
746 | argc = 0; | 739 | argc = 0; |
747 | for (arg = skip (&cp); cp; arg = skip (&cp)) { | 740 | for (arg = skip (&cp); cp; arg = skip (&cp)) { |
748 | if (argc < MAXARGV) | 741 | if (argc < MAXARGV) |
749 | sep->se_argv[argc++] = newstr (arg); | 742 | sep->se_argv[argc++] = xxstrdup (arg); |
750 | } | 743 | } |
751 | while (argc <= MAXARGV) | 744 | while (argc <= MAXARGV) |
752 | sep->se_argv[argc++] = NULL; | 745 | sep->se_argv[argc++] = NULL; |
@@ -764,7 +757,7 @@ more: | |||
764 | * and make a dup for the new entry. | 757 | * and make a dup for the new entry. |
765 | */ | 758 | */ |
766 | *hostdelim++ = '\0'; | 759 | *hostdelim++ = '\0'; |
767 | nsep->se_hostaddr = newstr (hostdelim); | 760 | nsep->se_hostaddr = xstrdup (hostdelim); |
768 | 761 | ||
769 | nsep->se_next = sep->se_next; | 762 | nsep->se_next = sep->se_next; |
770 | sep->se_next = nsep; | 763 | sep->se_next = nsep; |
@@ -781,12 +774,11 @@ more: | |||
781 | 774 | ||
782 | hp = gethostbyname (nsep->se_hostaddr); | 775 | hp = gethostbyname (nsep->se_hostaddr); |
783 | if (hp == 0) { | 776 | if (hp == 0) { |
784 | syslog (LOG_ERR, "%s: unknown host", nsep->se_hostaddr); | 777 | bb_error_msg ("%s: unknown host", nsep->se_hostaddr); |
785 | nsep->se_checked = 0; | 778 | nsep->se_checked = 0; |
786 | goto skip; | 779 | goto skip; |
787 | } else if (hp->h_addrtype != AF_INET) { | 780 | } else if (hp->h_addrtype != AF_INET) { |
788 | syslog (LOG_ERR, | 781 | bb_error_msg ("%s: address isn't an Internet " |
789 | "%s: address isn't an Internet " | ||
790 | "address", nsep->se_hostaddr); | 782 | "address", nsep->se_hostaddr); |
791 | nsep->se_checked = 0; | 783 | nsep->se_checked = 0; |
792 | goto skip; | 784 | goto skip; |
@@ -797,7 +789,7 @@ more: | |||
797 | hp->h_addr_list[0], sizeof (struct in_addr)); | 789 | hp->h_addr_list[0], sizeof (struct in_addr)); |
798 | while (hp->h_addr_list[i] != NULL) { | 790 | while (hp->h_addr_list[i] != NULL) { |
799 | psep = dupconfig (nsep); | 791 | psep = dupconfig (nsep); |
800 | psep->se_hostaddr = newstr (nsep->se_hostaddr); | 792 | psep->se_hostaddr = xxstrdup (nsep->se_hostaddr); |
801 | psep->se_checked = 1; | 793 | psep->se_checked = 1; |
802 | memmove (&psep->se_ctrladdr_in.sin_addr, | 794 | memmove (&psep->se_ctrladdr_in.sin_addr, |
803 | hp->h_addr_list[i], sizeof (struct in_addr)); | 795 | hp->h_addr_list[i], sizeof (struct in_addr)); |
@@ -913,7 +905,7 @@ static void config (int sig ATTRIBUTE_UNUSED) | |||
913 | char protoname[10]; | 905 | char protoname[10]; |
914 | 906 | ||
915 | if (!setconfig ()) { | 907 | if (!setconfig ()) { |
916 | syslog (LOG_ERR, "%s: %m", CONFIG); | 908 | bb_perror_msg ("%s", CONFIG); |
917 | return; | 909 | return; |
918 | } | 910 | } |
919 | for (sep = servtab; sep; sep = sep->se_next) | 911 | for (sep = servtab; sep; sep = sep->se_next) |
@@ -989,7 +981,7 @@ static void config (int sig ATTRIBUTE_UNUSED) | |||
989 | if (sep->se_rpcprog == 0) { | 981 | if (sep->se_rpcprog == 0) { |
990 | rp = getrpcbyname (sep->se_service); | 982 | rp = getrpcbyname (sep->se_service); |
991 | if (rp == 0) { | 983 | if (rp == 0) { |
992 | syslog (LOG_ERR, "%s: unknown rpc service", sep->se_service); | 984 | bb_error_msg ("%s: unknown rpc service", sep->se_service); |
993 | goto serv_unknown; | 985 | goto serv_unknown; |
994 | } | 986 | } |
995 | sep->se_rpcprog = rp->r_number; | 987 | sep->se_rpcprog = rp->r_number; |
@@ -1009,8 +1001,8 @@ static void config (int sig ATTRIBUTE_UNUSED) | |||
1009 | protoname[strlen (protoname) - 1] = '\0'; | 1001 | protoname[strlen (protoname) - 1] = '\0'; |
1010 | sp = getservbyname (sep->se_service, protoname); | 1002 | sp = getservbyname (sep->se_service, protoname); |
1011 | if (sp == 0) { | 1003 | if (sp == 0) { |
1012 | syslog (LOG_ERR, | 1004 | bb_error_msg ("%s/%s: unknown service", |
1013 | "%s/%s: unknown service", sep->se_service, sep->se_proto); | 1005 | sep->se_service, sep->se_proto); |
1014 | goto serv_unknown; | 1006 | goto serv_unknown; |
1015 | } | 1007 | } |
1016 | port = sp->s_port; | 1008 | port = sp->s_port; |
@@ -1042,7 +1034,7 @@ static void config (int sig ATTRIBUTE_UNUSED) | |||
1042 | if (sep->se_rpcprog == 0) { | 1034 | if (sep->se_rpcprog == 0) { |
1043 | rp = getrpcbyname (sep->se_service); | 1035 | rp = getrpcbyname (sep->se_service); |
1044 | if (rp == 0) { | 1036 | if (rp == 0) { |
1045 | syslog (LOG_ERR, "%s: unknown rpc service", sep->se_service); | 1037 | bb_error_msg ("%s: unknown rpc service", sep->se_service); |
1046 | goto serv_unknown; | 1038 | goto serv_unknown; |
1047 | } | 1039 | } |
1048 | sep->se_rpcprog = rp->r_number; | 1040 | sep->se_rpcprog = rp->r_number; |
@@ -1062,8 +1054,8 @@ static void config (int sig ATTRIBUTE_UNUSED) | |||
1062 | protoname[strlen (protoname) - 1] = '\0'; | 1054 | protoname[strlen (protoname) - 1] = '\0'; |
1063 | sp = getservbyname (sep->se_service, protoname); | 1055 | sp = getservbyname (sep->se_service, protoname); |
1064 | if (sp == 0) { | 1056 | if (sp == 0) { |
1065 | syslog (LOG_ERR, | 1057 | bb_error_msg ("%s/%s: unknown service", |
1066 | "%s/%s: unknown service", sep->se_service, sep->se_proto); | 1058 | sep->se_service, sep->se_proto); |
1067 | goto serv_unknown; | 1059 | goto serv_unknown; |
1068 | } | 1060 | } |
1069 | port = sp->s_port; | 1061 | port = sp->s_port; |
@@ -1137,12 +1129,11 @@ static void reapchild (int sig ATTRIBUTE_UNUSED) | |||
1137 | for (sep = servtab; sep; sep = sep->se_next) | 1129 | for (sep = servtab; sep; sep = sep->se_next) |
1138 | if (sep->se_wait == pid) { | 1130 | if (sep->se_wait == pid) { |
1139 | if (WIFEXITED (status) && WEXITSTATUS (status)) | 1131 | if (WIFEXITED (status) && WEXITSTATUS (status)) |
1140 | syslog (LOG_WARNING, | 1132 | bb_error_msg("%s: exit status 0x%x", |
1141 | "%s: exit status 0x%x", | ||
1142 | sep->se_server, WEXITSTATUS (status)); | 1133 | sep->se_server, WEXITSTATUS (status)); |
1143 | else if (WIFSIGNALED (status)) | 1134 | else if (WIFSIGNALED (status)) |
1144 | syslog (LOG_WARNING, | 1135 | bb_error_msg("%s: exit signal 0x%x", |
1145 | "%s: exit signal 0x%x", sep->se_server, WTERMSIG (status)); | 1136 | sep->se_server, WTERMSIG (status)); |
1146 | sep->se_wait = 1; | 1137 | sep->se_wait = 1; |
1147 | FD_SET (sep->se_fd, &allsock); | 1138 | FD_SET (sep->se_fd, &allsock); |
1148 | nsock++; | 1139 | nsock++; |
@@ -1271,7 +1262,7 @@ inetd_main (int argc, char *argv[]) | |||
1271 | toomany = strtoul (stoomany, &e, 0); | 1262 | toomany = strtoul (stoomany, &e, 0); |
1272 | if (!(toomany >= 0 && *e == '\0')) { | 1263 | if (!(toomany >= 0 && *e == '\0')) { |
1273 | toomany = TOOMANY; | 1264 | toomany = TOOMANY; |
1274 | syslog (LOG_ERR, "-R %s: bad value for service invocation rate", stoomany); | 1265 | bb_perror_msg ("-R %s: bad value for service invocation rate", stoomany); |
1275 | } | 1266 | } |
1276 | } | 1267 | } |
1277 | argc -= optind; | 1268 | argc -= optind; |
@@ -1295,6 +1286,7 @@ inetd_main (int argc, char *argv[]) | |||
1295 | } else { | 1286 | } else { |
1296 | setsid (); | 1287 | setsid (); |
1297 | } | 1288 | } |
1289 | logmode = LOGMODE_SYSLOG; | ||
1298 | 1290 | ||
1299 | if (uid == 0) { | 1291 | if (uid == 0) { |
1300 | gid_t gid = getgid (); | 1292 | gid_t gid = getgid (); |
@@ -1313,7 +1305,7 @@ inetd_main (int argc, char *argv[]) | |||
1313 | } | 1305 | } |
1314 | 1306 | ||
1315 | if (getrlimit (RLIMIT_NOFILE, &rlim_ofile) < 0) { | 1307 | if (getrlimit (RLIMIT_NOFILE, &rlim_ofile) < 0) { |
1316 | syslog (LOG_ERR, "getrlimit: %m"); | 1308 | bb_perror_msg ("getrlimit"); |
1317 | } else { | 1309 | } else { |
1318 | rlim_ofile_cur = rlim_ofile.rlim_cur; | 1310 | rlim_ofile_cur = rlim_ofile.rlim_cur; |
1319 | if (rlim_ofile_cur == RLIM_INFINITY) /* ! */ | 1311 | if (rlim_ofile_cur == RLIM_INFINITY) /* ! */ |
@@ -1365,7 +1357,7 @@ inetd_main (int argc, char *argv[]) | |||
1365 | readable = allsock; | 1357 | readable = allsock; |
1366 | if ((n = select (maxsock + 1, &readable, NULL, NULL, NULL)) <= 0) { | 1358 | if ((n = select (maxsock + 1, &readable, NULL, NULL, NULL)) <= 0) { |
1367 | if (n < 0 && errno != EINTR) { | 1359 | if (n < 0 && errno != EINTR) { |
1368 | syslog (LOG_WARNING, "select: %m"); | 1360 | bb_perror_msg("select"); |
1369 | sleep (1); | 1361 | sleep (1); |
1370 | } | 1362 | } |
1371 | continue; | 1363 | continue; |
@@ -1378,7 +1370,7 @@ inetd_main (int argc, char *argv[]) | |||
1378 | if (ctrl < 0) { | 1370 | if (ctrl < 0) { |
1379 | if (errno == EINTR) | 1371 | if (errno == EINTR) |
1380 | continue; | 1372 | continue; |
1381 | syslog (LOG_WARNING, "accept (for %s): %m", sep->se_service); | 1373 | bb_perror_msg("accept (for %s)", sep->se_service); |
1382 | continue; | 1374 | continue; |
1383 | } | 1375 | } |
1384 | if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) { | 1376 | if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) { |
@@ -1386,7 +1378,7 @@ inetd_main (int argc, char *argv[]) | |||
1386 | socklen_t plen = sizeof (peer); | 1378 | socklen_t plen = sizeof (peer); |
1387 | 1379 | ||
1388 | if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) { | 1380 | if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) { |
1389 | syslog (LOG_WARNING, "could not getpeername"); | 1381 | bb_error_msg("could not getpeername"); |
1390 | close (ctrl); | 1382 | close (ctrl); |
1391 | continue; | 1383 | continue; |
1392 | } | 1384 | } |
@@ -1426,8 +1418,7 @@ inetd_main (int argc, char *argv[]) | |||
1426 | --sep->se_count; | 1418 | --sep->se_count; |
1427 | continue; | 1419 | continue; |
1428 | } | 1420 | } |
1429 | syslog (LOG_ERR, | 1421 | bb_error_msg ("%s/%s server failing (looping), service terminated", |
1430 | "%s/%s server failing (looping), service terminated", | ||
1431 | sep->se_service, sep->se_proto); | 1422 | sep->se_service, sep->se_proto); |
1432 | if (!sep->se_wait && sep->se_socktype == SOCK_STREAM) | 1423 | if (!sep->se_wait && sep->se_socktype == SOCK_STREAM) |
1433 | close (ctrl); | 1424 | close (ctrl); |
@@ -1447,7 +1438,7 @@ inetd_main (int argc, char *argv[]) | |||
1447 | pid = fork (); | 1438 | pid = fork (); |
1448 | } | 1439 | } |
1449 | if (pid < 0) { | 1440 | if (pid < 0) { |
1450 | syslog (LOG_ERR, "fork: %m"); | 1441 | bb_perror_msg ("fork"); |
1451 | if (!sep->se_wait && sep->se_socktype == SOCK_STREAM) | 1442 | if (!sep->se_wait && sep->se_socktype == SOCK_STREAM) |
1452 | close (ctrl); | 1443 | close (ctrl); |
1453 | sigprocmask(SIG_UNBLOCK, &omask, NULL); | 1444 | sigprocmask(SIG_UNBLOCK, &omask, NULL); |
@@ -1468,15 +1459,15 @@ inetd_main (int argc, char *argv[]) | |||
1468 | #endif | 1459 | #endif |
1469 | { | 1460 | { |
1470 | if ((pwd = getpwnam (sep->se_user)) == NULL) { | 1461 | if ((pwd = getpwnam (sep->se_user)) == NULL) { |
1471 | syslog (LOG_ERR, "getpwnam: %s: No such user", sep->se_user); | 1462 | bb_error_msg ("getpwnam: %s: no such user", sep->se_user); |
1472 | if (sep->se_socktype != SOCK_STREAM) | 1463 | if (sep->se_socktype != SOCK_STREAM) |
1473 | recv (0, buf, sizeof (buf), 0); | 1464 | recv (0, buf, sizeof (buf), 0); |
1474 | _exit (1); | 1465 | _exit (1); |
1475 | } | 1466 | } |
1476 | if (setsid () < 0) | 1467 | if (setsid () < 0) |
1477 | syslog (LOG_ERR, "%s: setsid: %m", sep->se_service); | 1468 | bb_perror_msg ("%s: setsid", sep->se_service); |
1478 | if (sep->se_group && (grp = getgrnam (sep->se_group)) == NULL) { | 1469 | if (sep->se_group && (grp = getgrnam (sep->se_group)) == NULL) { |
1479 | syslog (LOG_ERR, "getgrnam: %s: No such group", sep->se_group); | 1470 | bb_error_msg ("getgrnam: %s: no such group", sep->se_group); |
1480 | if (sep->se_socktype != SOCK_STREAM) | 1471 | if (sep->se_socktype != SOCK_STREAM) |
1481 | recv (0, buf, sizeof (buf), 0); | 1472 | recv (0, buf, sizeof (buf), 0); |
1482 | _exit (1); | 1473 | _exit (1); |
@@ -1502,7 +1493,7 @@ inetd_main (int argc, char *argv[]) | |||
1502 | dup2 (0, 2); | 1493 | dup2 (0, 2); |
1503 | if (rlim_ofile.rlim_cur != rlim_ofile_cur) | 1494 | if (rlim_ofile.rlim_cur != rlim_ofile_cur) |
1504 | if (setrlimit (RLIMIT_NOFILE, &rlim_ofile) < 0) | 1495 | if (setrlimit (RLIMIT_NOFILE, &rlim_ofile) < 0) |
1505 | syslog (LOG_ERR, "setrlimit: %m"); | 1496 | bb_perror_msg ("setrlimit"); |
1506 | closelog (); | 1497 | closelog (); |
1507 | for (tmpint = rlim_ofile_cur - 1; --tmpint > 2;) | 1498 | for (tmpint = rlim_ofile_cur - 1; --tmpint > 2;) |
1508 | (void) close (tmpint); | 1499 | (void) close (tmpint); |
@@ -1510,7 +1501,7 @@ inetd_main (int argc, char *argv[]) | |||
1510 | execv (sep->se_server, sep->se_argv); | 1501 | execv (sep->se_server, sep->se_argv); |
1511 | if (sep->se_socktype != SOCK_STREAM) | 1502 | if (sep->se_socktype != SOCK_STREAM) |
1512 | recv (0, buf, sizeof (buf), 0); | 1503 | recv (0, buf, sizeof (buf), 0); |
1513 | syslog (LOG_ERR, "execv %s: %m", sep->se_server); | 1504 | bb_perror_msg ("execv %s", sep->se_server); |
1514 | _exit (1); | 1505 | _exit (1); |
1515 | } | 1506 | } |
1516 | } | 1507 | } |