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: /tcpdump/master/tcpdump/appletalk.h,v 1.13 2000/10/03 02:54:54 itojun Exp $ (LBL) 24 */ 25 26 struct LAP { 27 u_int8_t dst; 28 u_int8_t src; 29 u_int8_t 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_int16_t length; 39 u_int16_t checksum; 40 u_int16_t dstNet; 41 u_int16_t srcNet; 42 u_int8_t dstNode; 43 u_int8_t srcNode; 44 u_int8_t dstSkt; 45 u_int8_t srcSkt; 46 u_int8_t type; 47 }; 48 49 struct atShortDDP { 50 u_int16_t length; 51 u_int8_t dstSkt; 52 u_int8_t srcSkt; 53 u_int8_t 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_int8_t control; 77 u_int8_t bitmap; 78 u_int16_t 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_int8_t echoFunction; 98 u_int8_t *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_int8_t control; 111 u_int8_t id; 112 }; 113 114 struct atNBPtuple { 115 u_int16_t net; 116 u_int8_t node; 117 u_int8_t skt; 118 u_int8_t 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_int8_t command; 145 u_int8_t 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