?? qmail-tcpto.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 + -