home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / tcpdumpb.zip / interface.h < prev    next >
C/C++ Source or Header  |  1996-07-15  |  7KB  |  196 lines

  1. /*
  2.  * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that: (1) source code distributions
  7.  * retain the above copyright notice and this paragraph in its entirety, (2)
  8.  * distributions including binary code include the above copyright notice and
  9.  * this paragraph in its entirety in the documentation or other materials
  10.  * provided with the distribution, and (3) all advertising materials mentioning
  11.  * features or use of this software display the following acknowledgement:
  12.  * ``This product includes software developed by the University of California,
  13.  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
  14.  * the University nor the names of its contributors may be used to endorse
  15.  * or promote products derived from this software without specific prior
  16.  * written permission.
  17.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  18.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  19.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * @(#) $Header: interface.h,v 1.95 96/07/14 19:38:52 leres Exp $ (LBL)
  22.  */
  23.  
  24. #ifndef tcpdump_interface_h
  25. #define tcpdump_interface_h
  26.  
  27. #include "gnuc.h"
  28. #ifdef HAVE_OS_PROTO_H
  29. #include "os-proto.h"
  30. #endif
  31.  
  32. struct tok {
  33.     int v;            /* value */
  34.     char *s;        /* string */
  35. };
  36.  
  37. extern int dflag;        /* print filter code */
  38. extern int eflag;        /* print ethernet header */
  39. extern int nflag;        /* leave addresses as numbers */
  40. extern int Nflag;        /* remove domains from printed host names */
  41. extern int qflag;        /* quick (shorter) output */
  42. extern int Sflag;        /* print raw TCP sequence numbers */
  43. extern int tflag;        /* print packet arrival time */
  44. extern int vflag;        /* verbose */
  45. extern int xflag;        /* print packet in hex */
  46.  
  47. extern int packettype;        /* as specified by -T */
  48. #define PT_VAT        1    /* Visual Audio Tool */
  49. #define PT_WB        2    /* distributed White Board */
  50. #define PT_RPC        3    /* Remote Procedure Call */
  51. #define PT_RTP        4    /* Real-Time Applications protocol */
  52. #define PT_RTCP        5    /* Real-Time Applications control protocol */
  53.  
  54. extern char *program_name;    /* used to generate self-identifying messages */
  55.  
  56. extern int32_t thiszone;    /* seconds offset from gmt to local time */
  57.  
  58. extern int snaplen;
  59. /* global pointers to beginning and end of current packet (during printing) */
  60. extern const u_char *packetp;
  61. extern const u_char *snapend;
  62.  
  63. #define TCHECK2(var, l) if ((u_char *)&(var) > snapend - (l)) goto trunc
  64. #define TCHECK(var) TCHECK2(var, sizeof(var))
  65.  
  66. #ifdef __STDC__
  67. struct timeval;
  68. #endif
  69.  
  70. extern void ts_print(const struct timeval *);
  71. extern int32_t gmt2local(void);
  72.  
  73. extern int fn_print(const u_char *, const u_char *);
  74. extern int fn_printn(const u_char *, u_int, const u_char *);
  75. extern const char *tok2str(const struct tok *, const char *, int);
  76. extern char *dnaddr_string(u_short);
  77. extern char *savestr(const char *);
  78.  
  79. extern void wrapup(int);
  80.  
  81. #if __STDC__
  82. extern __dead void error(const char *, ...)
  83.     __attribute__((volatile, format (printf, 1, 2)));
  84. extern void warning(const char *, ...) __attribute__ ((format (printf, 1, 2)));
  85. #endif
  86.  
  87. extern char *read_infile(char *);
  88. extern char *copy_argv(char **);
  89.  
  90. extern char *isonsap_string(const u_char *);
  91. extern char *llcsap_string(u_char);
  92. extern char *protoid_string(const u_char *);
  93. extern char *dnname_string(u_short);
  94. extern char *dnnum_string(u_short);
  95.  
  96. /* The printer routines. */
  97.  
  98. #ifdef __STDC__
  99. struct pcap_pkthdr;
  100. #endif
  101.  
  102. extern void atm_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
  103. extern void ether_if_print(u_char *, const struct pcap_pkthdr *,
  104.     const u_char *);
  105. extern void fddi_if_print(u_char *, const struct pcap_pkthdr *, const u_char*);
  106. extern void null_if_print(u_char *, const struct pcap_pkthdr *, const u_char*);
  107. extern void ppp_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
  108. extern void sl_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
  109.  
  110. extern void arp_print(const u_char *, u_int, u_int);
  111. extern void ip_print(const u_char *, u_int);
  112. extern void tcp_print(const u_char *, u_int, const u_char *);
  113. extern void udp_print(const u_char *, u_int, const u_char *);
  114. extern void icmp_print(const u_char *, const u_char *);
  115. extern void igrp_print(const u_char *, u_int, const u_char *);
  116. extern void default_print(const u_char *, u_int);
  117. extern void default_print_unaligned(const u_char *, u_int);
  118.  
  119. extern void aarp_print(const u_char *, u_int);
  120. extern void atalk_print(const u_char *, u_int);
  121. extern void bootp_print(const u_char *, u_int, u_short, u_short);
  122. extern void decnet_print(const u_char *, u_int, u_int);
  123. extern void egp_print(const u_char *, u_int, const u_char *);
  124. extern int ether_encap_print(u_short, const u_char *, u_int, u_int);
  125. extern void ipx_print(const u_char *, u_int);
  126. extern void isoclns_print(const u_char *, u_int, u_int,
  127.     const u_char *, const u_char *);
  128. extern int llc_print(const u_char *, u_int, u_int,
  129.     const u_char *, const u_char *);
  130. extern void nfsreply_print(const u_char *, u_int, const u_char *);
  131. extern void nfsreq_print(const u_char *, u_int, const u_char *);
  132. extern void ns_print(const u_char *, u_int);
  133. extern void ntp_print(const u_char *, u_int);
  134. extern void ospf_print(const u_char *, u_int, const u_char *);
  135. extern void rip_print(const u_char *, u_int);
  136. extern void snmp_print(const u_char *, u_int);
  137. extern void sunrpcrequest_print(const u_char *, u_int, const u_char *);
  138. extern void tftp_print(const u_char *, u_int);
  139. extern void wb_print(const void *, u_int);
  140. extern void dvmrp_print(const u_char *, u_int);
  141. extern void pim_print(const u_char *, u_int);
  142. extern void krb_print(const u_char *, u_int);
  143.  
  144. #ifndef min
  145. #define min(a,b) ((a)>(b)?(b):(a))
  146. #endif
  147. #ifndef max
  148. #define max(a,b) ((b)>(a)?(b):(a))
  149. #endif
  150.  
  151. /*
  152.  * The default snapshot length.  This value allows most printers to print
  153.  * useful information while keeping the amount of unwanted data down.
  154.  * In particular, it allows for an ethernet header, tcp/ip header, and
  155.  * 14 bytes of data (assuming no ip options).
  156.  */
  157. #define DEFAULT_SNAPLEN 68
  158.  
  159. #ifndef BIG_ENDIAN
  160. #define BIG_ENDIAN 4321
  161. #define LITTLE_ENDIAN 1234
  162. #endif
  163.  
  164. #ifdef ETHER_HEADER_HAS_EA
  165. #define ESRC(ep) ((ep)->ether_shost.ether_addr_octet)
  166. #define EDST(ep) ((ep)->ether_dhost.ether_addr_octet)
  167. #else
  168. #define ESRC(ep) ((ep)->ether_shost)
  169. #define EDST(ep) ((ep)->ether_dhost)
  170. #endif
  171.  
  172. #ifdef ETHER_ARP_HAS_X
  173. #define SHA(ap) ((ap)->arp_xsha)
  174. #define THA(ap) ((ap)->arp_xtha)
  175. #define SPA(ap) ((ap)->arp_xspa)
  176. #define TPA(ap) ((ap)->arp_xtpa)
  177. #else
  178. #ifdef ETHER_ARP_HAS_EA
  179. #define SHA(ap) ((ap)->arp_sha.ether_addr_octet)
  180. #define THA(ap) ((ap)->arp_tha.ether_addr_octet)
  181. #else
  182. #define SHA(ap) ((ap)->arp_sha)
  183. #define THA(ap) ((ap)->arp_tha)
  184. #endif
  185. #define SPA(ap) ((ap)->arp_spa)
  186. #define TPA(ap) ((ap)->arp_tpa)
  187. #endif
  188.  
  189. #ifndef NTOHL
  190. #define NTOHL(x)    (x) = ntohl(x)
  191. #define NTOHS(x)    (x) = ntohs(x)
  192. #define HTONL(x)    (x) = htonl(x)
  193. #define HTONS(x)    (x) = htons(x)
  194. #endif
  195. #endif
  196.