home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / tcpdumpb.zip / appletalk.h < prev    next >
C/C++ Source or Header  |  1996-06-03  |  4KB  |  168 lines

  1. /*
  2.  * Copyright (c) 1988, 1989, 1990, 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.  * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
  22.  *
  23.  * @(#) $Header: appletalk.h,v 1.12 96/06/03 02:54:24 leres Exp $ (LBL)
  24.  */
  25.  
  26. struct LAP {
  27.     u_char    dst;
  28.     u_char    src;
  29.     u_char    type;
  30. };
  31. #define lapShortDDP    1    /* short DDP type */
  32. #define lapDDP        2    /* DDP type */
  33. #define lapKLAP        'K'    /* Kinetics KLAP type */
  34.  
  35. /* Datagram Delivery Protocol */
  36.  
  37. struct atDDP {
  38.     u_short    length;
  39.     u_short    checksum;
  40.     u_short    dstNet;
  41.     u_short    srcNet;
  42.     u_char    dstNode;
  43.     u_char    srcNode;
  44.     u_char    dstSkt;
  45.     u_char    srcSkt;
  46.     u_char    type;
  47. };
  48.  
  49. struct atShortDDP {
  50.     u_short    length;
  51.     u_char    dstSkt;
  52.     u_char    srcSkt;
  53.     u_char    type;
  54. };
  55.  
  56. #define    ddpMaxWKS    0x7F
  57. #define    ddpMaxData    586
  58. #define    ddpLengthMask    0x3FF
  59. #define    ddpHopShift    10
  60. #define    ddpSize        13    /* size of DDP header (avoid struct padding) */
  61. #define    ddpSSize    5
  62. #define    ddpWKS        128    /* boundary of DDP well known sockets */
  63. #define    ddpRTMP        1    /* RTMP type */
  64. #define    ddpRTMPrequest    5    /* RTMP request type */
  65. #define    ddpNBP        2    /* NBP type */
  66. #define    ddpATP        3    /* ATP type */
  67. #define    ddpECHO        4    /* ECHO type */
  68. #define    ddpIP        22    /* IP type */
  69. #define    ddpARP        23    /* ARP type */
  70. #define    ddpKLAP        0x4b    /* Kinetics KLAP type */
  71.  
  72.  
  73. /* AppleTalk Transaction Protocol */
  74.  
  75. struct atATP {
  76.     u_char    control;
  77.     u_char    bitmap;
  78.     u_short    transID;
  79.     int32_t userData;
  80. };
  81.  
  82. #define    atpReqCode    0x40
  83. #define    atpRspCode    0x80
  84. #define    atpRelCode    0xC0
  85. #define    atpXO        0x20
  86. #define    atpEOM        0x10
  87. #define    atpSTS        0x08
  88. #define    atpFlagMask    0x3F
  89. #define    atpControlMask    0xF8
  90. #define    atpMaxNum    8
  91. #define    atpMaxData    578
  92.  
  93.  
  94. /* AppleTalk Echo Protocol */
  95.  
  96. struct atEcho {
  97.     u_char    echoFunction;
  98.     u_char    *echoData;
  99. };
  100.  
  101. #define echoSkt        4        /* the echoer socket */
  102. #define echoSize    1        /* size of echo header */
  103. #define echoRequest    1        /* echo request */
  104. #define echoReply    2        /* echo request */
  105.  
  106.  
  107. /* Name Binding Protocol */
  108.  
  109. struct atNBP {
  110.     u_char    control;
  111.     u_char    id;
  112. };
  113.  
  114. struct atNBPtuple {
  115.     u_short    net;
  116.     u_char    node;
  117.     u_char    skt;
  118.     u_char    enumerator;
  119. };
  120.  
  121. #define    nbpBrRq        0x10
  122. #define    nbpLkUp        0x20
  123. #define    nbpLkUpReply    0x30
  124.  
  125. #define    nbpNIS        2
  126. #define    nbpTupleMax    15
  127.  
  128. #define    nbpHeaderSize    2
  129. #define nbpTupleSize    5
  130.  
  131. #define nbpSkt        2        /* NIS */
  132.  
  133.  
  134. /* Routing Table Maint. Protocol */
  135.  
  136. #define    rtmpSkt        1    /* number of RTMP socket */
  137. #define    rtmpSize    4    /* minimum size */
  138. #define    rtmpTupleSize    3
  139.  
  140.  
  141. /* Zone Information Protocol */
  142.  
  143. struct zipHeader {
  144.     u_char    command;
  145.     u_char    netcount;
  146. };
  147.  
  148. #define    zipHeaderSize    2
  149. #define    zipQuery    1
  150. #define    zipReply    2
  151. #define    zipTakedown    3
  152. #define    zipBringup    4
  153. #define    ddpZIP        6
  154. #define    zipSkt        6
  155. #define    GetMyZone    7
  156. #define    GetZoneList    8
  157.  
  158. /*
  159.  * UDP port range used for ddp-in-udp encapsulation is 16512-16639
  160.  * for client sockets (128-255) and 200-327 for server sockets
  161.  * (0-127).  We also try to recognize the pre-April 88 server
  162.  * socket range of 768-895.
  163.  */
  164. #define atalk_port(p) \
  165.     (((unsigned)((p) - 16512) < 128) || \
  166.      ((unsigned)((p) - 200) < 128) || \
  167.      ((unsigned)((p) - 768) < 128))
  168.