xref: /openbsd-src/usr.sbin/tcpdump/appletalk.h (revision 2068f6866b8079dd0e3bc8189f056d1db3480a77)
1*2068f686Sderaadt /*	$OpenBSD: appletalk.h,v 1.8 2007/10/07 16:41:05 deraadt Exp $	*/
2cf4e9b47Sho 
3df930be7Sderaadt /*
4c15d59edSmickey  * Copyright (c) 1988, 1989, 1990, 1993, 1994, 1995, 1996
5df930be7Sderaadt  *	The Regents of the University of California.  All rights reserved.
6df930be7Sderaadt  *
7df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
8df930be7Sderaadt  * modification, are permitted provided that: (1) source code distributions
9df930be7Sderaadt  * retain the above copyright notice and this paragraph in its entirety, (2)
10df930be7Sderaadt  * distributions including binary code include the above copyright notice and
11df930be7Sderaadt  * this paragraph in its entirety in the documentation or other materials
12df930be7Sderaadt  * provided with the distribution, and (3) all advertising materials mentioning
13df930be7Sderaadt  * features or use of this software display the following acknowledgement:
14df930be7Sderaadt  * ``This product includes software developed by the University of California,
15df930be7Sderaadt  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
16df930be7Sderaadt  * the University nor the names of its contributors may be used to endorse
17df930be7Sderaadt  * or promote products derived from this software without specific prior
18df930be7Sderaadt  * written permission.
19df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
20df930be7Sderaadt  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
21df930be7Sderaadt  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22df930be7Sderaadt  *
23df930be7Sderaadt  * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
24df930be7Sderaadt  *
25*2068f686Sderaadt  * @(#) $Id: appletalk.h,v 1.8 2007/10/07 16:41:05 deraadt Exp $ (LBL)
26df930be7Sderaadt  */
27df930be7Sderaadt 
28df930be7Sderaadt struct LAP {
29df930be7Sderaadt 	u_char	dst;
30df930be7Sderaadt 	u_char	src;
31df930be7Sderaadt 	u_char	type;
32df930be7Sderaadt };
33df930be7Sderaadt #define lapShortDDP	1	/* short DDP type */
34df930be7Sderaadt #define lapDDP		2	/* DDP type */
35df930be7Sderaadt #define lapKLAP		'K'	/* Kinetics KLAP type */
36df930be7Sderaadt 
37df930be7Sderaadt /* Datagram Delivery Protocol */
38df930be7Sderaadt 
39df930be7Sderaadt struct atDDP {
40df930be7Sderaadt 	u_short	length;
41df930be7Sderaadt 	u_short	checksum;
42df930be7Sderaadt 	u_short	dstNet;
43df930be7Sderaadt 	u_short	srcNet;
44df930be7Sderaadt 	u_char	dstNode;
45df930be7Sderaadt 	u_char	srcNode;
46df930be7Sderaadt 	u_char	dstSkt;
47df930be7Sderaadt 	u_char	srcSkt;
48df930be7Sderaadt 	u_char	type;
49df930be7Sderaadt };
50df930be7Sderaadt 
51df930be7Sderaadt struct atShortDDP {
52df930be7Sderaadt 	u_short	length;
53df930be7Sderaadt 	u_char	dstSkt;
54df930be7Sderaadt 	u_char	srcSkt;
55df930be7Sderaadt 	u_char	type;
56df930be7Sderaadt };
57df930be7Sderaadt 
58df930be7Sderaadt #define	ddpMaxWKS	0x7F
59df930be7Sderaadt #define	ddpMaxData	586
60df930be7Sderaadt #define	ddpLengthMask	0x3FF
61df930be7Sderaadt #define	ddpHopShift	10
62df930be7Sderaadt #define	ddpSize		13	/* size of DDP header (avoid struct padding) */
63df930be7Sderaadt #define	ddpSSize	5
64df930be7Sderaadt #define	ddpWKS		128	/* boundary of DDP well known sockets */
65df930be7Sderaadt #define	ddpRTMP		1	/* RTMP type */
66df930be7Sderaadt #define	ddpRTMPrequest	5	/* RTMP request type */
67df930be7Sderaadt #define	ddpNBP		2	/* NBP type */
68df930be7Sderaadt #define	ddpATP		3	/* ATP type */
69df930be7Sderaadt #define	ddpECHO		4	/* ECHO type */
70df930be7Sderaadt #define	ddpIP		22	/* IP type */
71df930be7Sderaadt #define	ddpARP		23	/* ARP type */
72df930be7Sderaadt #define	ddpKLAP		0x4b	/* Kinetics KLAP type */
73df930be7Sderaadt 
74df930be7Sderaadt 
75df930be7Sderaadt /* AppleTalk Transaction Protocol */
76df930be7Sderaadt 
77df930be7Sderaadt struct atATP {
78df930be7Sderaadt 	u_char	control;
79df930be7Sderaadt 	u_char	bitmap;
80df930be7Sderaadt 	u_short	transID;
81c15d59edSmickey 	int32_t userData;
82df930be7Sderaadt };
83df930be7Sderaadt 
84df930be7Sderaadt #define	atpReqCode	0x40
85df930be7Sderaadt #define	atpRspCode	0x80
86df930be7Sderaadt #define	atpRelCode	0xC0
87df930be7Sderaadt #define	atpXO		0x20
88df930be7Sderaadt #define	atpEOM		0x10
89df930be7Sderaadt #define	atpSTS		0x08
90df930be7Sderaadt #define	atpFlagMask	0x3F
91df930be7Sderaadt #define	atpControlMask	0xF8
92df930be7Sderaadt #define	atpMaxNum	8
93df930be7Sderaadt #define	atpMaxData	578
94df930be7Sderaadt 
95df930be7Sderaadt 
96df930be7Sderaadt /* AppleTalk Echo Protocol */
97df930be7Sderaadt 
98df930be7Sderaadt struct atEcho {
99df930be7Sderaadt 	u_char	echoFunction;
100df930be7Sderaadt 	u_char	*echoData;
101df930be7Sderaadt };
102df930be7Sderaadt 
103df930be7Sderaadt #define echoSkt		4		/* the echoer socket */
104df930be7Sderaadt #define echoSize	1		/* size of echo header */
105df930be7Sderaadt #define echoRequest	1		/* echo request */
106df930be7Sderaadt #define echoReply	2		/* echo request */
107df930be7Sderaadt 
108df930be7Sderaadt 
109df930be7Sderaadt /* Name Binding Protocol */
110df930be7Sderaadt 
111df930be7Sderaadt struct atNBP {
112df930be7Sderaadt 	u_char	control;
113df930be7Sderaadt 	u_char	id;
114df930be7Sderaadt };
115df930be7Sderaadt 
116df930be7Sderaadt struct atNBPtuple {
117df930be7Sderaadt 	u_short	net;
118df930be7Sderaadt 	u_char	node;
119df930be7Sderaadt 	u_char	skt;
120df930be7Sderaadt 	u_char	enumerator;
121df930be7Sderaadt };
122df930be7Sderaadt 
123df930be7Sderaadt #define	nbpBrRq		0x10
124df930be7Sderaadt #define	nbpLkUp		0x20
125df930be7Sderaadt #define	nbpLkUpReply	0x30
126e4a24ee0Sdenny #define	nbpFwd		0x40
127e4a24ee0Sdenny /* The following are not standard, but netatalk uses them. */
128e4a24ee0Sdenny #define	nbpNATLKrgstr	0xc0
129e4a24ee0Sdenny #define	nbpNATLKunrgstr	0xd0
130e4a24ee0Sdenny #define	nbpNATLKok	0xe0
131e4a24ee0Sdenny #define	nbpNATLKerr	0xf0
132df930be7Sderaadt 
133df930be7Sderaadt #define	nbpNIS		2
134df930be7Sderaadt #define	nbpTupleMax	15
135df930be7Sderaadt 
136df930be7Sderaadt #define	nbpHeaderSize	2
137df930be7Sderaadt #define nbpTupleSize	5
138df930be7Sderaadt 
139df930be7Sderaadt #define nbpSkt		2		/* NIS */
140df930be7Sderaadt 
141df930be7Sderaadt 
142df930be7Sderaadt /* Routing Table Maint. Protocol */
143df930be7Sderaadt 
144df930be7Sderaadt #define	rtmpSkt		1	/* number of RTMP socket */
145df930be7Sderaadt #define	rtmpSize	4	/* minimum size */
146df930be7Sderaadt #define	rtmpTupleSize	3
147df930be7Sderaadt 
148df930be7Sderaadt 
149df930be7Sderaadt /* Zone Information Protocol */
150df930be7Sderaadt 
151df930be7Sderaadt struct zipHeader {
152df930be7Sderaadt 	u_char	command;
153df930be7Sderaadt 	u_char	netcount;
154df930be7Sderaadt };
155df930be7Sderaadt 
156df930be7Sderaadt #define	zipHeaderSize	2
157df930be7Sderaadt #define	zipQuery	1
158df930be7Sderaadt #define	zipReply	2
159df930be7Sderaadt #define	zipTakedown	3
160df930be7Sderaadt #define	zipBringup	4
161df930be7Sderaadt #define	ddpZIP		6
162df930be7Sderaadt #define	zipSkt		6
163df930be7Sderaadt #define	GetMyZone	7
164df930be7Sderaadt #define	GetZoneList	8
165df930be7Sderaadt 
166df930be7Sderaadt /*
167df930be7Sderaadt  * UDP port range used for ddp-in-udp encapsulation is 16512-16639
168df930be7Sderaadt  * for client sockets (128-255) and 200-327 for server sockets
169df930be7Sderaadt  * (0-127).  We also try to recognize the pre-April 88 server
170df930be7Sderaadt  * socket range of 768-895.
171df930be7Sderaadt  */
172df930be7Sderaadt #define atalk_port(p) \
173df930be7Sderaadt 	(((unsigned)((p) - 16512) < 128) || \
174df930be7Sderaadt 	 ((unsigned)((p) - 200) < 128) || \
175df930be7Sderaadt 	 ((unsigned)((p) - 768) < 128))
176