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