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.16 2004-05-01 09:41:50 hannes 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 ddpEIGRP 88 /* EIGRP over Appletalk */ 71 #define ddpKLAP 0x4b /* Kinetics KLAP type */ 72 73 74 /* AppleTalk Transaction Protocol */ 75 76 struct atATP { 77 u_int8_t control; 78 u_int8_t bitmap; 79 u_int16_t transID; 80 int32_t userData; 81 }; 82 83 #define atpReqCode 0x40 84 #define atpRspCode 0x80 85 #define atpRelCode 0xC0 86 #define atpXO 0x20 87 #define atpEOM 0x10 88 #define atpSTS 0x08 89 #define atpFlagMask 0x3F 90 #define atpControlMask 0xF8 91 #define atpMaxNum 8 92 #define atpMaxData 578 93 94 95 /* AppleTalk Echo Protocol */ 96 97 struct atEcho { 98 u_int8_t echoFunction; 99 u_int8_t *echoData; 100 }; 101 102 #define echoSkt 4 /* the echoer socket */ 103 #define echoSize 1 /* size of echo header */ 104 #define echoRequest 1 /* echo request */ 105 #define echoReply 2 /* echo request */ 106 107 108 /* Name Binding Protocol */ 109 110 struct atNBP { 111 u_int8_t control; 112 u_int8_t id; 113 }; 114 115 struct atNBPtuple { 116 u_int16_t net; 117 u_int8_t node; 118 u_int8_t skt; 119 u_int8_t enumerator; 120 }; 121 122 #define nbpBrRq 0x10 123 #define nbpLkUp 0x20 124 #define nbpLkUpReply 0x30 125 126 #define nbpNIS 2 127 #define nbpTupleMax 15 128 129 #define nbpHeaderSize 2 130 #define nbpTupleSize 5 131 132 #define nbpSkt 2 /* NIS */ 133 134 135 /* Routing Table Maint. Protocol */ 136 137 #define rtmpSkt 1 /* number of RTMP socket */ 138 #define rtmpSize 4 /* minimum size */ 139 #define rtmpTupleSize 3 140 141 142 /* Zone Information Protocol */ 143 144 struct zipHeader { 145 u_int8_t command; 146 u_int8_t netcount; 147 }; 148 149 #define zipHeaderSize 2 150 #define zipQuery 1 151 #define zipReply 2 152 #define zipTakedown 3 153 #define zipBringup 4 154 #define ddpZIP 6 155 #define zipSkt 6 156 #define GetMyZone 7 157 #define GetZoneList 8 158 159 /* 160 * UDP port range used for ddp-in-udp encapsulation is 16512-16639 161 * for client sockets (128-255) and 200-327 for server sockets 162 * (0-127). We also try to recognize the pre-April 88 server 163 * socket range of 768-895. 164 */ 165 #define atalk_port(p) \ 166 (((unsigned)((p) - 16512) < 128) || \ 167 ((unsigned)((p) - 200) < 128) || \ 168 ((unsigned)((p) - 768) < 128)) 169