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