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 26struct 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 37struct 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 49struct 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 76struct 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 97struct 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 110struct atNBP { 111 u_int8_t control; 112 u_int8_t id; 113}; 114 115struct 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 144struct 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