int
main (int argc, char *argv[], char *envp[])
{
if (pidfile_option)
{
FILE *fp = fopen (pid_file, "w");
if (fp != NULL)
{
if (debug)
fprintf(stderr, "Using pid-file at \"%s\".\n", pid_file);
fprintf (fp, "%d\n", (int) getpid ());
fclose (fp);
}
else
syslog (LOG_CRIT, "can't open %s: %s\n", pid_file,
strerror (errno));
}
signal_set_handler (SIGALRM, retry);
config (0);
第一部分调试信息
Using pid-file at "/var/run/inetd.pid".
void
config (int signo)
{
else if (S_ISREG (statbuf.st_mode))
{
nextconfig (config_files[i]);
}
}
else
{
if (signo == 0)
fprintf (stderr, "inetd: %s, %s\n",
config_files[i], strerror (errno));
else
syslog (LOG_ERR, "%s: %m", config_files[i]);
}
}
第五部分调试信息
inetd: /etc/inetd.d, No such file or directory
void
nextconfig (const char *file)
{
while ((sep = getconfigent (fconfig, file, &line)))
{
if (ISMUX (sep))
{
sep->se_fd = -1;
sep->se_checked = 1;
enter (sep);
}
else
expand_enter (sep);
if (serv_node)
free (sep->se_node);
else
freeconfig (sep);
}
struct servtab *
getconfigent (FILE *fconfig, const char *file, size_t *line)
{
for (i = 0; i < sep->se_argc; i++)
{
sep->se_argv[i] = argv[INETD_SERVER_ARGS + i];
if (debug)
fprintf (stderr, "sep->se_argv[%d] = %s\n",i,sep->se_argv[i]);
argv[INETD_SERVER_ARGS + i] = 0;
}
第二部分调试信息:(自己加的)
sep->se_argv[0] = /usr/sbin/tftpd
sep->se_argv[1] = -l
sep->se_argv[2] = /home/ch/tftpboot
sep->se_argv[3] = (null)
int
expand_enter (struct servtab *sep)
{
for (rp = result; rp != NULL; rp = rp->ai_next)
{
memset (&sep->se_ctrladdr, 0, sizeof (sep->se_ctrladdr));
memcpy (&sep->se_ctrladdr, rp->ai_addr, rp->ai_addrlen);
sep->se_addrlen = rp->ai_addrlen;
cp = enter (sep);
servent_setup (cp);
}
struct servtab *
enter (struct servtab *cp)
{
if (debug)
print_service ("ADD ", cp);
第三部分调试信息
/etc/inetd.conf:32: ADD : *:tftp proto=udp, wait=1, max=0, user=nobody group= builtin=no server=/usr/sbin/tcpd
void
servent_setup (struct servtab *sep)
{
if (debug)
fprintf (stderr, "registered %s on %d\n", sep->se_server, sep->se_fd);
第四部分调试信息
registered /usr/sbin/tcpd on 4
main (int argc, char *argv[], char *envp[])
{
if (pidfile_option)
{
FILE *fp = fopen (pid_file, "w");
if (fp != NULL)
{
if (debug)
fprintf(stderr, "Using pid-file at \"%s\".\n", pid_file);
fprintf (fp, "%d\n", (int) getpid ());
fclose (fp);
}
else
syslog (LOG_CRIT, "can't open %s: %s\n", pid_file,
strerror (errno));
}
signal_set_handler (SIGALRM, retry);
config (0);
第一部分调试信息
Using pid-file at "/var/run/inetd.pid".
void
config (int signo)
{
else if (S_ISREG (statbuf.st_mode))
{
nextconfig (config_files[i]);
}
}
else
{
if (signo == 0)
fprintf (stderr, "inetd: %s, %s\n",
config_files[i], strerror (errno));
else
syslog (LOG_ERR, "%s: %m", config_files[i]);
}
}
第五部分调试信息
inetd: /etc/inetd.d, No such file or directory
void
nextconfig (const char *file)
{
while ((sep = getconfigent (fconfig, file, &line)))
{
if (ISMUX (sep))
{
sep->se_fd = -1;
sep->se_checked = 1;
enter (sep);
}
else
expand_enter (sep);
if (serv_node)
free (sep->se_node);
else
freeconfig (sep);
}
struct servtab *
getconfigent (FILE *fconfig, const char *file, size_t *line)
{
for (i = 0; i < sep->se_argc; i++)
{
sep->se_argv[i] = argv[INETD_SERVER_ARGS + i];
if (debug)
fprintf (stderr, "sep->se_argv[%d] = %s\n",i,sep->se_argv[i]);
argv[INETD_SERVER_ARGS + i] = 0;
}
第二部分调试信息:(自己加的)
sep->se_argv[0] = /usr/sbin/tftpd
sep->se_argv[1] = -l
sep->se_argv[2] = /home/ch/tftpboot
sep->se_argv[3] = (null)
int
expand_enter (struct servtab *sep)
{
for (rp = result; rp != NULL; rp = rp->ai_next)
{
memset (&sep->se_ctrladdr, 0, sizeof (sep->se_ctrladdr));
memcpy (&sep->se_ctrladdr, rp->ai_addr, rp->ai_addrlen);
sep->se_addrlen = rp->ai_addrlen;
cp = enter (sep);
servent_setup (cp);
}
struct servtab *
enter (struct servtab *cp)
{
if (debug)
print_service ("ADD ", cp);
第三部分调试信息
/etc/inetd.conf:32: ADD : *:tftp proto=udp, wait=1, max=0, user=nobody group= builtin=no server=/usr/sbin/tcpd
void
servent_setup (struct servtab *sep)
{
if (debug)
fprintf (stderr, "registered %s on %d\n", sep->se_server, sep->se_fd);
第四部分调试信息
registered /usr/sbin/tcpd on 4