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

📄 netdissect.h

📁 TCPDUMP的C语言源代码,是在数据链路层的应用
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1988-1997 *	The Regents of the University of California.  All rights reserved. * * Copyright (c) 1998-2004  Michael Richardson <mcr@tcpdump.org> *      The TCPDUMP project * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#) $Header: /tcpdump/master/tcpdump/netdissect.h,v 1.23.2.2 2008-04-04 19:42:52 guy Exp $ (LBL) */#ifndef netdissect_h#define netdissect_h#ifdef HAVE_OS_PROTO_H#include "os-proto.h"#endif#include <sys/types.h>#ifndef HAVE___ATTRIBUTE__#define __attribute__(x)#endif/* snprintf et al */#include <stdarg.h>#if !defined(HAVE_SNPRINTF)int snprintf (char *str, size_t sz, const char *format, ...)     __attribute__ ((format (printf, 3, 4)));#endif#if !defined(HAVE_VSNPRINTF)int vsnprintf (char *str, size_t sz, const char *format, va_list ap)     __attribute__((format (printf, 3, 0)));#endif#ifndef HAVE_STRLCATextern size_t strlcat (char *, const char *, size_t);#endif#ifndef HAVE_STRLCPYextern size_t strlcpy (char *, const char *, size_t);#endif#ifndef HAVE_STRDUPextern char *strdup (const char *str);#endif#ifndef HAVE_STRSEPextern char *strsep(char **, const char *);#endifstruct tok {	int v;			/* value */	const char *s;		/* string */};#define TOKBUFSIZE 128extern const char *tok2strbuf(const struct tok *, const char *, int,			      char *buf, size_t bufsize);/* tok2str is deprecated */extern const char *tok2str(const struct tok *, const char *, int);extern char *bittok2str(const struct tok *, const char *, int);extern char *bittok2str_nosep(const struct tok *, const char *, int);typedef struct netdissect_options netdissect_options;struct netdissect_options {  int ndo_aflag;		/* translate network and broadcast addresses */  int ndo_eflag;		/* print ethernet header */  int ndo_fflag;		/* don't translate "foreign" IP address */  int ndo_Kflag;		/* don't check TCP checksums */  int ndo_nflag;		/* leave addresses as numbers */  int ndo_Nflag;		/* remove domains from printed host names */  int ndo_qflag;		/* quick (shorter) output */  int ndo_Rflag;		/* print sequence # field in AH/ESP*/  int ndo_sflag;		/* use the libsmi to translate OIDs */  int ndo_Sflag;		/* print raw TCP sequence numbers */  int ndo_tflag;		/* print packet arrival time */  int ndo_Uflag;		/* "unbuffered" output of dump files */  int ndo_uflag;		/* Print undecoded NFS handles */  int ndo_vflag;		/* verbose */  int ndo_xflag;		/* print packet in hex */  int ndo_Xflag;		/* print packet in hex/ascii */  int ndo_Aflag;		/* print packet only in ascii observing TAB,				 * LF, CR and SPACE as graphical chars				 */  int ndo_Bflag;		/* buffer size */  int ndo_Iflag;		/* rfmon (monitor) mode */  int ndo_Oflag;                /* run filter code optimizer */  int ndo_dlt;                  /* if != -1, ask libpcap for the DLT it names*/  int ndo_pflag;                /* don't go promiscuous */  int ndo_Cflag;                /* rotate dump files after this many bytes */   int ndo_Cflag_count;      /* Keep track of which file number we're writing */  int ndo_Gflag;            /* rotate dump files after this many seconds */  int ndo_Gflag_count;      /* number of files created with Gflag rotation */  time_t ndo_Gflag_time;    /* The last time_t the dump file was rotated. */  int ndo_Wflag;          /* recycle output files after this number of files */  int ndo_WflagChars;  int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */  const char *ndo_dltname;  char *ndo_espsecret;  struct sa_list *ndo_sa_list_head;  /* used by print-esp.c */  struct sa_list *ndo_sa_default;  char *ndo_tcpmd5secret;     	/* TCP-MD5 secret key */  struct esp_algorithm *ndo_espsecret_xform;   /* cache of decoded  */  char                 *ndo_espsecret_key;  int   ndo_packettype;	/* as specified by -T */  char *ndo_program_name;	/*used to generate self-identifying messages */  int32_t ndo_thiszone;	/* seconds offset from gmt to local time */  int   ndo_snaplen;  /*global pointers to beginning and end of current packet (during printing) */  const u_char *ndo_packetp;  const u_char *ndo_snapend;  /* bookkeeping for ^T output */  int ndo_infodelay;  /* pointer to void function to output stuff */  void (*ndo_default_print)(netdissect_options *,  		      register const u_char *bp, register u_int length);  void (*ndo_info)(netdissect_options *, int verbose);  int  (*ndo_printf)(netdissect_options *,		     const char *fmt, ...);  void (*ndo_error)(netdissect_options *,		    const char *fmt, ...);  void (*ndo_warning)(netdissect_options *,		      const char *fmt, ...);};#define PT_VAT		1	/* Visual Audio Tool */#define PT_WB		2	/* distributed White Board */#define PT_RPC		3	/* Remote Procedure Call */#define PT_RTP		4	/* Real-Time Applications protocol */#define PT_RTCP		5	/* Real-Time Applications control protocol */#define PT_SNMP		6	/* Simple Network Management Protocol */#define PT_CNFP		7	/* Cisco NetFlow protocol */#ifndef min#define min(a,b) ((a)>(b)?(b):(a))#endif#ifndef max#define max(a,b) ((b)>(a)?(b):(a))#endif#ifndef INET6/* * The default snapshot length.  This value allows most printers to print * useful information while keeping the amount of unwanted data down. * In particular, it allows for an ethernet header, tcp/ip header, and * 14 bytes of data (assuming no ip options). */#define DEFAULT_SNAPLEN 68#else#define DEFAULT_SNAPLEN 96#endif#ifndef BIG_ENDIAN#define BIG_ENDIAN 4321#define LITTLE_ENDIAN 1234#endif#define ESRC(ep) ((ep)->ether_shost)#define EDST(ep) ((ep)->ether_dhost)#ifndef NTOHL#define NTOHL(x)	(x) = ntohl(x)#define NTOHS(x)	(x) = ntohs(x)#define HTONL(x)	(x) = htonl(x)#define HTONS(x)	(x) = htons(x)#endif/* * True if "l" bytes of "var" were captured. * * The "ndo->ndo_snapend - (l) <= ndo->ndo_snapend" checks to make sure * "l" isn't so large that "ndo->ndo_snapend - (l)" underflows. * * The check is for <= rather than < because "l" might be 0. */#define ND_TTEST2(var, l) (ndo->ndo_snapend - (l) <= ndo->ndo_snapend && \			(const u_char *)&(var) <= ndo->ndo_snapend - (l))/* True if "var" was captured */#define ND_TTEST(var) ND_TTEST2(var, sizeof(var))/* Bail if "l" bytes of "var" were not captured */#define ND_TCHECK2(var, l) if (!ND_TTEST2(var, l)) goto trunc/* Bail if "var" was not captured */#define ND_TCHECK(var) ND_TCHECK2(var, sizeof(var))#define ND_PRINT(STUFF) (*ndo->ndo_printf)STUFF#define ND_DEFAULTPRINT(ap, length) (*ndo->ndo_default_print)(ndo, ap, length)#if 0	

⌨️ 快捷键说明

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