aboutsummaryrefslogtreecommitdiff
path: root/networking/inetd.c
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2004-01-17 05:03:31 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2004-01-17 05:03:31 +0000
commit036dbaa082f1974246d1d7d21a8e163559642485 (patch)
tree2488441544ab16f8e08d0955d323019e96ed3d4f /networking/inetd.c
parentb03be7f5677b86acfe2f64b5a57e1f361e257f6c (diff)
downloadbusybox-w32-036dbaa082f1974246d1d7d21a8e163559642485.tar.gz
busybox-w32-036dbaa082f1974246d1d7d21a8e163559642485.tar.bz2
busybox-w32-036dbaa082f1974246d1d7d21a8e163559642485.zip
Modify bb_lookup_port to allow the protocol to be specified, allowing
/etc/services support for inetd, netcat and tftp.
Diffstat (limited to 'networking/inetd.c')
-rw-r--r--networking/inetd.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/networking/inetd.c b/networking/inetd.c
index d225527a9..24415fe7d 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -610,19 +610,13 @@ static void config(int signum)
610 sep->se_ctrladdr_in.sin_family = AF_INET; 610 sep->se_ctrladdr_in.sin_family = AF_INET;
611 sep->se_ctrladdr_size = sizeof sep->se_ctrladdr_in; 611 sep->se_ctrladdr_size = sizeof sep->se_ctrladdr_in;
612 { 612 {
613 u_short port = htons(atoi(sep->se_service)); 613 u_short port = bb_lookup_port(sep->se_service, sep->se_proto, 0);
614 614
615 if (!port) { 615 if (port == 0) {
616 struct servent *sp; 616 syslog(LOG_ERR,
617 sp = getservbyname(sep->se_service, 617 "%s/%s: unknown service",
618 sep->se_proto); 618 sep->se_service, sep->se_proto);
619 if (sp == 0) { 619 continue;
620 syslog(LOG_ERR,
621 "%s/%s: unknown service",
622 sep->se_service, sep->se_proto);
623 continue;
624 }
625 port = sp->s_port;
626 } 620 }
627 if (port != sep->se_ctrladdr_in.sin_port) { 621 if (port != sep->se_ctrladdr_in.sin_port) {
628 sep->se_ctrladdr_in.sin_port = port; 622 sep->se_ctrladdr_in.sin_port = port;