您的位置:首页 > 编程语言

inetd源代码分析之调试信息对应的源代码

2017-12-12 11:01 447 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  inetd