xref: /dflybsd-src/contrib/tcpdump/appletalk.h (revision 59c07fbdf8168fa08c76c515186d561b5a92690c)
141c99275SPeter Avalos /*
241c99275SPeter Avalos  * Copyright (c) 1988, 1989, 1990, 1993, 1994, 1995, 1996
341c99275SPeter Avalos  *	The Regents of the University of California.  All rights reserved.
441c99275SPeter Avalos  *
541c99275SPeter Avalos  * Redistribution and use in source and binary forms, with or without
641c99275SPeter Avalos  * modification, are permitted provided that: (1) source code distributions
741c99275SPeter Avalos  * retain the above copyright notice and this paragraph in its entirety, (2)
841c99275SPeter Avalos  * distributions including binary code include the above copyright notice and
941c99275SPeter Avalos  * this paragraph in its entirety in the documentation or other materials
1041c99275SPeter Avalos  * provided with the distribution, and (3) all advertising materials mentioning
1141c99275SPeter Avalos  * features or use of this software display the following acknowledgement:
1241c99275SPeter Avalos  * ``This product includes software developed by the University of California,
1341c99275SPeter Avalos  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
1441c99275SPeter Avalos  * the University nor the names of its contributors may be used to endorse
1541c99275SPeter Avalos  * or promote products derived from this software without specific prior
1641c99275SPeter Avalos  * written permission.
1741c99275SPeter Avalos  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
1841c99275SPeter Avalos  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1941c99275SPeter Avalos  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2041c99275SPeter Avalos  *
2141c99275SPeter Avalos  * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
2241c99275SPeter Avalos  */
2341c99275SPeter Avalos 
2441c99275SPeter Avalos struct LAP {
25*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	dst;
26*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	src;
27*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	type;
2841c99275SPeter Avalos };
2941c99275SPeter Avalos #define lapShortDDP	1	/* short DDP type */
3041c99275SPeter Avalos #define lapDDP		2	/* DDP type */
3141c99275SPeter Avalos #define lapKLAP		'K'	/* Kinetics KLAP type */
3241c99275SPeter Avalos 
3341c99275SPeter Avalos /* Datagram Delivery Protocol */
3441c99275SPeter Avalos 
3541c99275SPeter Avalos struct atDDP {
36*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	length;
37*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	checksum;
38*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	dstNet;
39*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	srcNet;
40*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	dstNode;
41*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	srcNode;
42*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	dstSkt;
43*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	srcSkt;
44*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	type;
4541c99275SPeter Avalos };
4641c99275SPeter Avalos 
4741c99275SPeter Avalos struct atShortDDP {
48*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	length;
49*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	dstSkt;
50*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	srcSkt;
51*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	type;
5241c99275SPeter Avalos };
5341c99275SPeter Avalos 
5441c99275SPeter Avalos #define	ddpMaxWKS	0x7F
5541c99275SPeter Avalos #define	ddpMaxData	586
5641c99275SPeter Avalos #define	ddpLengthMask	0x3FF
5741c99275SPeter Avalos #define	ddpHopShift	10
5841c99275SPeter Avalos #define	ddpSize		13	/* size of DDP header (avoid struct padding) */
5941c99275SPeter Avalos #define	ddpSSize	5
6041c99275SPeter Avalos #define	ddpWKS		128	/* boundary of DDP well known sockets */
6141c99275SPeter Avalos #define	ddpRTMP		1	/* RTMP type */
6241c99275SPeter Avalos #define	ddpRTMPrequest	5	/* RTMP request type */
6341c99275SPeter Avalos #define	ddpNBP		2	/* NBP type */
6441c99275SPeter Avalos #define	ddpATP		3	/* ATP type */
6541c99275SPeter Avalos #define	ddpECHO		4	/* ECHO type */
6641c99275SPeter Avalos #define	ddpIP		22	/* IP type */
6741c99275SPeter Avalos #define	ddpARP		23	/* ARP type */
6841c99275SPeter Avalos #define ddpEIGRP        88      /* EIGRP over Appletalk */
6941c99275SPeter Avalos #define	ddpKLAP		0x4b	/* Kinetics KLAP type */
7041c99275SPeter Avalos 
7141c99275SPeter Avalos 
7241c99275SPeter Avalos /* AppleTalk Transaction Protocol */
7341c99275SPeter Avalos 
7441c99275SPeter Avalos struct atATP {
75*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	control;
76*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	bitmap;
77*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	transID;
78*ed775ee7SAntonio Huete Jimenez 	nd_uint32_t	userData;
7941c99275SPeter Avalos };
8041c99275SPeter Avalos 
8141c99275SPeter Avalos #define	atpReqCode	0x40
8241c99275SPeter Avalos #define	atpRspCode	0x80
8341c99275SPeter Avalos #define	atpRelCode	0xC0
8441c99275SPeter Avalos #define	atpXO		0x20
8541c99275SPeter Avalos #define	atpEOM		0x10
8641c99275SPeter Avalos #define	atpSTS		0x08
8741c99275SPeter Avalos #define	atpFlagMask	0x3F
8841c99275SPeter Avalos #define	atpControlMask	0xF8
8941c99275SPeter Avalos #define	atpMaxNum	8
9041c99275SPeter Avalos #define	atpMaxData	578
9141c99275SPeter Avalos 
9241c99275SPeter Avalos 
9341c99275SPeter Avalos /* AppleTalk Echo Protocol */
9441c99275SPeter Avalos 
9541c99275SPeter Avalos struct atEcho {
96*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	echoFunction;
97*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	echoData[1];	/* Should be [], C99-style */
9841c99275SPeter Avalos };
9941c99275SPeter Avalos 
10041c99275SPeter Avalos #define echoSkt		4		/* the echoer socket */
10141c99275SPeter Avalos #define echoSize	1		/* size of echo header */
10241c99275SPeter Avalos #define echoRequest	1		/* echo request */
10341c99275SPeter Avalos #define echoReply	2		/* echo request */
10441c99275SPeter Avalos 
10541c99275SPeter Avalos 
10641c99275SPeter Avalos /* Name Binding Protocol */
10741c99275SPeter Avalos 
10841c99275SPeter Avalos struct atNBP {
109*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	control;
110*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	id;
11141c99275SPeter Avalos };
11241c99275SPeter Avalos 
11341c99275SPeter Avalos struct atNBPtuple {
114*ed775ee7SAntonio Huete Jimenez 	nd_uint16_t	net;
115*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	node;
116*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	skt;
117*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t	enumerator;
11841c99275SPeter Avalos };
11941c99275SPeter Avalos 
12041c99275SPeter Avalos #define	nbpBrRq		0x10
12141c99275SPeter Avalos #define	nbpLkUp		0x20
12241c99275SPeter Avalos #define	nbpLkUpReply	0x30
12341c99275SPeter Avalos 
12441c99275SPeter Avalos #define	nbpNIS		2
12541c99275SPeter Avalos #define	nbpTupleMax	15
12641c99275SPeter Avalos 
12741c99275SPeter Avalos #define	nbpHeaderSize	2
12841c99275SPeter Avalos #define nbpTupleSize	5
12941c99275SPeter Avalos 
13041c99275SPeter Avalos #define nbpSkt		2		/* NIS */
13141c99275SPeter Avalos 
13241c99275SPeter Avalos 
13341c99275SPeter Avalos /* Routing Table Maint. Protocol */
13441c99275SPeter Avalos 
13541c99275SPeter Avalos #define	rtmpSkt		1	/* number of RTMP socket */
13641c99275SPeter Avalos #define	rtmpSize	4	/* minimum size */
13741c99275SPeter Avalos #define	rtmpTupleSize	3
13841c99275SPeter Avalos 
13941c99275SPeter Avalos 
14041c99275SPeter Avalos /* Zone Information Protocol */
14141c99275SPeter Avalos 
14241c99275SPeter Avalos struct zipHeader {
143*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t		command;
144*ed775ee7SAntonio Huete Jimenez 	nd_uint8_t		netcount;
14541c99275SPeter Avalos };
14641c99275SPeter Avalos 
14741c99275SPeter Avalos #define	zipHeaderSize	2
14841c99275SPeter Avalos #define	zipQuery	1
14941c99275SPeter Avalos #define	zipReply	2
15041c99275SPeter Avalos #define	zipTakedown	3
15141c99275SPeter Avalos #define	zipBringup	4
15241c99275SPeter Avalos #define	ddpZIP		6
15341c99275SPeter Avalos #define	zipSkt		6
15441c99275SPeter Avalos #define	GetMyZone	7
15541c99275SPeter Avalos #define	GetZoneList	8
15641c99275SPeter Avalos 
15741c99275SPeter Avalos /*
15841c99275SPeter Avalos  * UDP port range used for ddp-in-udp encapsulation is 16512-16639
15941c99275SPeter Avalos  * for client sockets (128-255) and 200-327 for server sockets
16041c99275SPeter Avalos  * (0-127).  We also try to recognize the pre-April 88 server
16141c99275SPeter Avalos  * socket range of 768-895.
16241c99275SPeter Avalos  */
16341c99275SPeter Avalos #define atalk_port(p) \
16441c99275SPeter Avalos 	(((unsigned)((p) - 16512) < 128) || \
16541c99275SPeter Avalos 	 ((unsigned)((p) - 200) < 128) || \
16641c99275SPeter Avalos 	 ((unsigned)((p) - 768) < 128))
167