亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? general.c

?? 國外搜集的著名的botnet(也就是僵尸網絡)源代碼
?? C
字號:
/*
 * general.c
 * - diagnostic functions
 * - vbuf handling
 */
/*
 *  This file is
 *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
 *
 *  It is part of adns, which is
 *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
 *    Copyright (C) 1999-2000 Tony Finch <dot@dotat.at>
 *  
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software Foundation,
 *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 */

#include <stdlib.h>

#ifdef ADNS_JGAA_WIN32
# include "../adns_win32/adns_win32.h"
#else
# include <unistd.h>
# include <sys/types.h>
# include <sys/socket.h>
# include <netinet/in.h>
# include <arpa/inet.h>
#endif

#include "internal.h"

/* Core diagnostic functions */

void adns__vdiag(adns_state ads, const char *pfx, adns_initflags prevent,
		 int serv, adns_query qu, const char *fmt, va_list al) {
  const char *bef, *aft;
  vbuf vb;
  
  if (!ads->diagfile ||
      (!(ads->iflags & adns_if_debug) && (!prevent || (ads->iflags & prevent))))
    return;

  if (ads->iflags & adns_if_logpid) {
    fprintf(ads->diagfile,"adns%s [%ld]: ",pfx,(long)getpid());
  } else {
    fprintf(ads->diagfile,"adns%s: ",pfx);
  }

  vfprintf(ads->diagfile,fmt,al);

  bef= " (";
  aft= "\n";

  if (qu && qu->query_dgram) {
    adns__vbuf_init(&vb);
    fprintf(ads->diagfile,"%sQNAME=%s, QTYPE=%s",
	    bef,
	    adns__diag_domain(qu->ads,-1,0, &vb,
			      qu->query_dgram,qu->query_dglen,DNS_HDRSIZE),
	    qu->typei ? qu->typei->rrtname : "<unknown>");
    if (qu->typei && qu->typei->fmtname)
      fprintf(ads->diagfile,"(%s)",qu->typei->fmtname);
    bef=", "; aft=")\n";
    adns__vbuf_free(&vb);
  }
  
  if (serv>=0) {
    fprintf(ads->diagfile,"%sNS=%s",bef,inet_ntoa(ads->servers[serv].addr));
    bef=", "; aft=")\n";
  }

  fputs(aft,ads->diagfile);
}

void adns__debug(adns_state ads, int serv, adns_query qu, const char *fmt, ...) {
  va_list al;

  va_start(al,fmt);
  adns__vdiag(ads," debug",0,serv,qu,fmt,al);
  va_end(al);
}

void adns__warn(adns_state ads, int serv, adns_query qu, const char *fmt, ...) {
  va_list al;

  va_start(al,fmt);
  adns__vdiag(ads," warning",adns_if_noerrprint|adns_if_noserverwarn,serv,qu,fmt,al);
  va_end(al);
}

void adns__diag(adns_state ads, int serv, adns_query qu, const char *fmt, ...) {
  va_list al;

  va_start(al,fmt);
  adns__vdiag(ads,"",adns_if_noerrprint,serv,qu,fmt,al);
  va_end(al);
}

/* vbuf functions */

void adns__vbuf_init(vbuf *vb) {
  vb->used= vb->avail= 0; vb->buf= 0;
}

int adns__vbuf_ensure(vbuf *vb, int want) {
  void *nb;
  
  if (vb->avail >= want) return 1;
  nb= realloc(vb->buf,want); if (!nb) return 0;
  vb->buf= nb;
  vb->avail= want;
  return 1;
}
  
void adns__vbuf_appendq(vbuf *vb, const byte *data, int len) {
  memcpy(vb->buf+vb->used,data,len);
  vb->used+= len;
}

int adns__vbuf_append(vbuf *vb, const byte *data, int len) {
  int newlen;
  void *nb;

  newlen= vb->used+len;
  if (vb->avail < newlen) {
    if (newlen<20) newlen= 20;
    newlen <<= 1;
    nb= realloc(vb->buf,newlen);
    if (!nb) { newlen= vb->used+len; nb= realloc(vb->buf,newlen); }
    if (!nb) return 0;
    vb->buf= nb;
    vb->avail= newlen;
  }
  adns__vbuf_appendq(vb,data,len);
  return 1;
}

int adns__vbuf_appendstr(vbuf *vb, const char *data) {
  int l;
  l= strlen(data);
  return adns__vbuf_append(vb,data,l);
}

void adns__vbuf_free(vbuf *vb) {
  free(vb->buf);
  adns__vbuf_init(vb);
}

/* Additional diagnostic functions */

const char *adns__diag_domain(adns_state ads, int serv, adns_query qu,
			      vbuf *vb, const byte *dgram, int dglen, int cbyte) {
  adns_status st;

  st= adns__parse_domain(ads,serv,qu,vb, pdf_quoteok, dgram,dglen,&cbyte,dglen);
  if (st == adns_s_nomemory) {
    return "<cannot report domain... out of memory>";
  }
  if (st) {
    vb->used= 0;
    if (!(adns__vbuf_appendstr(vb,"<bad format... ") &&
	  adns__vbuf_appendstr(vb,adns_strerror(st)) &&
	  adns__vbuf_appendstr(vb,">") &&
	  adns__vbuf_append(vb,"",1))) {
      return "<cannot report bad format... out of memory>";
    }
  }
  if (!vb->used) {
    adns__vbuf_appendstr(vb,"<truncated ...>");
    adns__vbuf_append(vb,"",1);
  }
  return vb->buf;
}

adns_status adns_rr_info(adns_rrtype type,
			 const char **rrtname_r, const char **fmtname_r,
			 int *len_r,
			 const void *datap, char **data_r) {
  const typeinfo *typei;
  vbuf vb;
  adns_status st;

  typei= adns__findtype(type);
  if (!typei) return adns_s_unknownrrtype;

  if (rrtname_r) *rrtname_r= typei->rrtname;
  if (fmtname_r) *fmtname_r= typei->fmtname;
  if (len_r) *len_r= typei->rrsz;

  if (!datap) return adns_s_ok;
  
  adns__vbuf_init(&vb);
  st= typei->convstring(&vb,datap);
  if (st) goto x_freevb;
  if (!adns__vbuf_append(&vb,"",1)) { st= adns_s_nomemory; goto x_freevb; }
  assert((int)strlen(vb.buf) == vb.used-1);
  *data_r= realloc(vb.buf,vb.used);
  if (!*data_r) *data_r= vb.buf;
  return adns_s_ok;

 x_freevb:
  adns__vbuf_free(&vb);
  return st;
}


#define SINFO(n,s) { adns_s_##n, #n, s }

static const struct sinfo {
  adns_status st;
  const char *abbrev;
  const char *string;
} sinfos[]= {
  SINFO(  ok,                  "OK"                                            ),

  SINFO(  nomemory,            "Out of memory"                                 ),
  SINFO(  unknownrrtype,       "Query not implemented in DNS library"          ),
  SINFO(  systemfail,          "General resolver or system failure"            ),

  SINFO(  timeout,             "DNS query timed out"                           ),
  SINFO(  allservfail,         "All nameservers failed"                        ),
  SINFO(  norecurse,           "Recursion denied by nameserver"                ),
  SINFO(  invalidresponse,     "Nameserver sent bad response"                  ),
  SINFO(  unknownformat,       "Nameserver used unknown format"                ),

  SINFO(  rcodeservfail,       "Nameserver reports failure"                    ),
  SINFO(  rcodeformaterror,    "Query not understood by nameserver"            ),
  SINFO(  rcodenotimplemented, "Query not implemented by nameserver"           ),
  SINFO(  rcoderefused,        "Query refused by nameserver"                   ),
  SINFO(  rcodeunknown,        "Nameserver sent unknown response code"         ),
  
  SINFO(  inconsistent,        "Inconsistent resource records in DNS"          ),
  SINFO(  prohibitedcname,     "DNS alias found where canonical name wanted"   ),
  SINFO(  answerdomaininvalid, "Found syntactically invalid domain name"       ),
  SINFO(  answerdomaintoolong, "Found overly-long domain name"                 ),
  SINFO(  invaliddata,         "Found invalid DNS data"                        ),

  SINFO(  querydomainwrong,    "Domain invalid for particular DNS query type"  ),
  SINFO(  querydomaininvalid,  "Domain name is syntactically invalid"          ),
  SINFO(  querydomaintoolong,  "Domain name or component is too long"          ),

  SINFO(  nxdomain,            "No such domain"                                ),
  SINFO(  nodata,              "No such data"                                  )
};

static int si_compar(const void *key, const void *elem) {
  const adns_status *st= key;
  const struct sinfo *si= elem;

  return *st < si->st ? -1 : *st > si->st ? 1 : 0;
}

static const struct sinfo *findsinfo(adns_status st) {
  return bsearch(&st,sinfos,sizeof(sinfos)/sizeof(*sinfos),sizeof(*sinfos),si_compar);
}

const char *adns_strerror(adns_status st) {
  const struct sinfo *si;

  si= findsinfo(st);
  return si->string;
}

const char *adns_errabbrev(adns_status st) {
  const struct sinfo *si;

  si= findsinfo(st);
  return si->abbrev;
}


#define STINFO(max) { adns_s_max_##max, #max }

static const struct stinfo {
  adns_status stmax;
  const char *abbrev;
} stinfos[]= {
  { adns_s_ok, "ok" },
  STINFO(  localfail   ),
  STINFO(  remotefail  ),
  STINFO(  tempfail    ),
  STINFO(  misconfig   ),
  STINFO(  misquery    ),
  STINFO(  permfail    )
};

static int sti_compar(const void *key, const void *elem) {
  const adns_status *st= key;
  const struct stinfo *sti= elem;

  adns_status here, min, max;

  here= *st;
  min= (sti==stinfos) ? 0 : sti[-1].stmax+1;
  max= sti->stmax;
  
  return here < min  ? -1 : here > max ? 1 : 0;
}

const char *adns_errtypeabbrev(adns_status st) {
  const struct stinfo *sti;

  sti= bsearch(&st,stinfos,sizeof(stinfos)/sizeof(*stinfos),sizeof(*stinfos),sti_compar);
  return sti->abbrev;
}


void adns__isort(void *array, int nobjs, int sz, void *tempbuf,
		 int (*needswap)(void *context, const void *a, const void *b),
		 void *context) {
  byte *data= array;
  int i, place;

  for (i=0; i<nobjs; i++) {
    for (place= i;
	 place>0 && needswap(context, data + (place-1)*sz, data + i*sz);
	 place--);
    if (place != i) {
      memcpy(tempbuf, data + i*sz, sz);
      memmove(data + (place+1)*sz, data + place*sz, (i-place)*sz);
      memcpy(data + place*sz, tempbuf, sz);
    }
  }
}

/* SIGPIPE protection. */
/* Not required under Win32 with MSVC */

void adns__sigpipe_protect(adns_state ads) {
#ifndef ADNS_JGAA_WIN32
  sigset_t toblock;
  struct sigaction sa;
  int r;

  if (ads->iflags & adns_if_nosigpipe) return;

  sigfillset(&toblock);
  sigdelset(&toblock,SIGPIPE);

  sa.sa_handler= SIG_IGN;
  sigfillset(&sa.sa_mask);
  sa.sa_flags= 0;
  
  r= sigprocmask(SIG_SETMASK,&toblock,&ads->stdsigmask); assert(!r);
  r= sigaction(SIGPIPE,&sa,&ads->stdsigpipe); assert(!r);
#endif
}

void adns__sigpipe_unprotect(adns_state ads) {
#ifndef ADNS_JGAA_WIN32
  int r;

  if (ads->iflags & adns_if_nosigpipe) return;

  r= sigaction(SIGPIPE,&ads->stdsigpipe,0); assert(!r);
  r= sigprocmask(SIG_SETMASK,&ads->stdsigmask,0); assert(!r);
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片av一区二区| 亚洲综合一二三区| 久久丁香综合五月国产三级网站| 欧美视频一区在线| 午夜精品国产更新| 制服视频三区第一页精品| 日韩专区一卡二卡| 精品欧美乱码久久久久久1区2区| 久久成人羞羞网站| 国产日产欧美一区二区三区| 成人黄色一级视频| 夜夜爽夜夜爽精品视频| 欧美丰满高潮xxxx喷水动漫| 国产一区二区中文字幕| 中文字幕中文字幕一区| 欧美日韩一区视频| 久久机这里只有精品| 国产精品麻豆久久久| 一本色道久久加勒比精品| 秋霞影院一区二区| 国产精品久久久久一区二区三区| 欧美中文字幕一二三区视频| 精品一区二区三区免费观看| 亚洲丝袜美腿综合| 91精品国产综合久久久久久久久久| 国产精品中文字幕日韩精品| 亚洲一区在线观看免费| 日韩精品一区二区在线| 91视频在线观看| 久久精品国产亚洲一区二区三区| 一区视频在线播放| 日韩精品一区二区三区swag| 色悠悠亚洲一区二区| 精品一区二区三区免费毛片爱 | 一区二区三区国产精华| 精品久久99ma| 欧美综合色免费| 国产精品一区二区男女羞羞无遮挡| 一区二区三区在线观看国产| 欧美精品一区二区三区蜜臀| 91福利视频久久久久| 国产成人自拍网| 日本成人在线视频网站| 亚洲色欲色欲www在线观看| 欧美成人欧美edvon| 欧美亚日韩国产aⅴ精品中极品| 国产一二三精品| 日本欧美一区二区在线观看| 亚洲三级视频在线观看| 国产夜色精品一区二区av| 欧美一区永久视频免费观看| 一本大道久久a久久综合婷婷| 国产综合色产在线精品| 日韩国产欧美在线观看| 亚洲欧洲综合另类| 欧美激情一区不卡| 精品国免费一区二区三区| 欧美久久高跟鞋激| 色综合激情久久| 波多野结衣在线aⅴ中文字幕不卡| 国产一区二区三区综合| 日本成人超碰在线观看| 亚洲高清免费在线| 一区二区三区不卡视频| 亚洲女爱视频在线| 国产精品久久久久一区二区三区| 久久先锋影音av鲁色资源网| 欧美本精品男人aⅴ天堂| 欧美美女一区二区| 欧美日韩午夜在线视频| 91精彩视频在线| 在线观看www91| 色欧美乱欧美15图片| 色综合久久66| 色激情天天射综合网| 日本二三区不卡| 一本久道中文字幕精品亚洲嫩| 99国产精品久久久久久久久久| www.久久久久久久久| 成人18视频日本| 91网址在线看| 色悠久久久久综合欧美99| 91视频免费观看| 欧美一a一片一级一片| 在线观看免费一区| 欧美日韩精品久久久| 欧美一区二区在线看| 欧美大片在线观看一区二区| 久久综合色天天久久综合图片| 久久久天堂av| 国产亚洲欧美日韩俺去了| 欧美国产亚洲另类动漫| 亚洲欧洲日韩综合一区二区| 亚洲影院久久精品| 免费日本视频一区| 国产一区二区导航在线播放| 国产精品一区二区免费不卡 | 国产精品色哟哟网站| 亚洲欧洲在线观看av| 亚洲国产日韩a在线播放性色| 舔着乳尖日韩一区| 国产在线播放一区二区三区| 成人看片黄a免费看在线| 色诱视频网站一区| 91精品国产乱码久久蜜臀| 久久久91精品国产一区二区精品| 中文字幕精品三区| 亚洲不卡av一区二区三区| 蜜桃视频一区二区三区| 粉嫩嫩av羞羞动漫久久久| 欧美日韩综合一区| 久久久久久麻豆| 亚洲午夜一区二区| 国产一区二区在线电影| 色丁香久综合在线久综合在线观看| 欧美一级免费大片| 亚洲欧洲日韩在线| 久久精品久久99精品久久| 99麻豆久久久国产精品免费优播| 欧美日韩高清在线播放| 日本一区二区三区四区| 午夜久久久久久久久| 国产成人自拍高清视频在线免费播放| 一本大道久久精品懂色aⅴ| 精品久久久久一区二区国产| 一区二区三区欧美在线观看| 久久精品国产成人一区二区三区 | 亚洲综合激情另类小说区| 国产自产高清不卡| 在线观看免费视频综合| 欧美国产乱子伦| 日本成人超碰在线观看| 91网站在线播放| 久久综合色一综合色88| 婷婷成人综合网| 色哟哟一区二区| 国产日韩欧美综合在线| 蜜芽一区二区三区| 色偷偷久久一区二区三区| 久久久久久免费网| 久久国产精品第一页| 欧美精品一卡二卡| 亚洲欧洲av在线| 国产白丝网站精品污在线入口| 欧美精品在欧美一区二区少妇| 一区二区三区**美女毛片| 成人免费视频国产在线观看| 日韩精品一区二区三区视频在线观看 | 国产精品一区二区久久不卡| 777亚洲妇女| 亚洲一区二区三区四区在线免费观看| 国产 欧美在线| 久久综合狠狠综合| 国产又粗又猛又爽又黄91精品| 欧美精品18+| 亚洲成人资源网| 欧美色图在线观看| 一个色妞综合视频在线观看| 一本色道久久综合狠狠躁的推荐| 国产精品素人视频| 成人av在线一区二区| 国产亚洲欧美在线| 顶级嫩模精品视频在线看| 久久在线免费观看| 国产又粗又猛又爽又黄91精品| 欧美成人三级在线| 国产一区二区三区久久悠悠色av| 日韩欧美不卡一区| 老司机精品视频一区二区三区| 欧美一区二区女人| 九九**精品视频免费播放| 日韩精品一区二区三区视频在线观看| 麻豆成人91精品二区三区| 日韩精品一区二区三区视频| 激情久久久久久久久久久久久久久久| 欧美一区二区人人喊爽| 久草热8精品视频在线观看| 久久伊99综合婷婷久久伊| 国产在线不卡视频| 欧美国产综合色视频| 色综合中文综合网| 亚洲人快播电影网| 色婷婷综合久久久中文字幕| 亚洲黄色免费网站| 欧美日韩亚洲综合在线| 蜜臀精品久久久久久蜜臀| 久久精品人人做人人综合| a在线播放不卡| 亚洲午夜在线电影| 日韩午夜激情av| 成人免费看黄yyy456| 一区二区三区影院| 欧美成人一级视频| 波多野结衣在线一区| 亚洲aⅴ怡春院| 久久欧美中文字幕| 91视视频在线观看入口直接观看www| 亚洲福利视频一区| 2019国产精品| 91老司机福利 在线|