appletalk.h revision 75115
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 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 ddpKLAP 0x4b /* Kinetics KLAP type */ 71 72 73/* AppleTalk Transaction Protocol */ 74 75struct 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 96struct 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 109struct atNBP { 110 u_int8_t control; 111 u_int8_t id; 112}; 113 114struct 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 143struct 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