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

📄 misc.cc

📁 xprobe package sources code
💻 CC
字号:
#include "usi++/usi++"#include "usi++/usi-structs.h"#include <string.h>#include <unistd.h>#include <sys/ioctl.h>#include <errno.h>namespace usipp {typedef u_int16_t u_short;bool exceptions = false;// ripped code, slightly modified// to pad odd length automagically (UDP,TCP)unsigned shortin_cksum (unsigned short *ptr, int nbytes, bool may_pad){  register long sum;		/* assumes long == 32 bits */  u_short oddbyte;  register u_short answer;	/* assumes u_short == 16 bits */  /* For psuedo-headers: odd len's require   * padding. We assume that UDP,TCP always   * gives enough room for computation */  if (nbytes % 2 && may_pad)	++nbytes;  /*   * Our algorithm is simple, using a 32-bit accumulator (sum),   * we add sequential 16-bit words to it, and at the end, fold back   * all the carry bits from the top 16 bits into the lower 16 bits.   */  sum = 0;  while (nbytes > 1)    {      sum += *ptr++;      nbytes -= 2;    }  /* mop up an odd byte, if necessary */  if (nbytes == 1)    {      oddbyte = 0;		/* make sure top half is zero */      *((unsigned char *) & oddbyte) = *(unsigned char *) ptr;	/* one byte only */      sum += oddbyte;    }  /*   * Add back carry outs from top 16 bits to low 16 bits.   */  sum = (sum >> 16) + (sum & 0xffff);	/* add high-16 to low-16 */  sum += (sum >> 16);		/* add carry */  answer = ~sum;		/* ones-complement, then truncate to 16 bits */  return (answer);}/*! Turn throwing of exceptions on or off. */int useException(bool how){	exceptions = how;	return 0;}void die(const char *message, errorFuncs what, int error){	if (exceptions) {		throw usifault(message);	}	/* Not reached, if 'exceptions' was true */	switch (what) {	case PERROR:		perror(message);    		break;	case STDERR:		fprintf(stderr, "%s", message);		break;	case HERROR:		(void)herror(message);		break;	case PCAP:		fprintf(stderr, "%s", pcap_strerror(error));		break;	default:		break;	}	exit(error);}} // namespace usipp

⌨️ 快捷键说明

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