⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmail-tcpto.c

📁 linux下qmail的源码 本人加了一些注释
💻 C
字号:
/* XXX: this program knows quite a bit about tcpto's internals *///显示当前的tcp超时记录表
#include "substdio.h"#include "subfd.h"#include "auto_qmail.h"#include "fmt.h"#include "ip.h"#include "lock.h"#include "error.h"#include "exit.h"#include "datetime.h"#include "now.h"void die(n) int n; { substdio_flush(subfdout); _exit(n); }void warn(s) char *s;{ char *x; x = error_str(errno); substdio_puts(subfdout,s); substdio_puts(subfdout,": "); substdio_puts(subfdout,x); substdio_puts(subfdout,"\n");}void die_chdir() { warn("fatal: unable to chdir"); die(111); }void die_open() { warn("fatal: unable to open tcpto"); die(111); }void die_lock() { warn("fatal: unable to lock tcpto"); die(111); }void die_read() { warn("fatal: unable to read tcpto"); die(111); }char tcpto_buf[1024];char tmp[FMT_ULONG + IPFMT];void main(){ int fdlock; int fd; int r; int i; char *record; struct ip_address ip; datetime_sec when; datetime_sec start; if (chdir(auto_qmail) == -1) die_chdir(); if (chdir("queue/lock") == -1) die_chdir(); fdlock = open_write("tcpto"); if (fdlock == -1) die_open(); fd = open_read("tcpto"); if (fd == -1) die_open(); if (lock_ex(fdlock) == -1) die_lock(); r = read(fd,tcpto_buf,sizeof(tcpto_buf)); close(fd); close(fdlock); if (r == -1) die_read(); r >>= 4; start = now(); record = tcpto_buf; for (i = 0;i < r;++i)  {   if (record[4] >= 1)    {     byte_copy(&ip,4,record);     when = (unsigned long) (unsigned char) record[11];     when = (when << 8) + (unsigned long) (unsigned char) record[10];     when = (when << 8) + (unsigned long) (unsigned char) record[9];     when = (when << 8) + (unsigned long) (unsigned char) record[8];     substdio_put(subfdout,tmp,ip_fmt(tmp,&ip));     substdio_puts(subfdout," timed out ");     substdio_put(subfdout,tmp,fmt_ulong(tmp,(unsigned long) (start - when)));     substdio_puts(subfdout," seconds ago; # recent timeouts: ");     substdio_put(subfdout,tmp,fmt_ulong(tmp,(unsigned long) (unsigned char) record[4]));     substdio_puts(subfdout,"\n");    }   record += 16;  } die(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -