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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值