12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1988, 1989, 1990, 1993, 1994, 1995, 1996
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code distributions
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * retain the above copyright notice and this paragraph in its entirety, (2)
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions including binary code include the above copyright notice and
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this paragraph in its entirety in the documentation or other materials
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided with the distribution, and (3) all advertising materials mentioning
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * features or use of this software display the following acknowledgement:
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ``This product includes software developed by the University of California,
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the University nor the names of its contributors may be used to endorse
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * or promote products derived from this software without specific prior
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission.
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
2353f17a9db278d33517d9888dd77848f554522a38JP Abgrall * @(#) $Header: /tcpdump/master/tcpdump/appletalk.h,v 1.16 2004-05-01 09:41:50 hannes Exp $ (LBL)
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct LAP {
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	dst;
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	src;
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	type;
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define lapShortDDP	1	/* short DDP type */
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define lapDDP		2	/* DDP type */
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define lapKLAP		'K'	/* Kinetics KLAP type */
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Datagram Delivery Protocol */
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atDDP {
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	length;
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	checksum;
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	dstNet;
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	srcNet;
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	dstNode;
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	srcNode;
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	dstSkt;
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	srcSkt;
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	type;
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atShortDDP {
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	length;
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	dstSkt;
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	srcSkt;
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	type;
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpMaxWKS	0x7F
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpMaxData	586
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpLengthMask	0x3FF
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpHopShift	10
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpSize		13	/* size of DDP header (avoid struct padding) */
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpSSize	5
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpWKS		128	/* boundary of DDP well known sockets */
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpRTMP		1	/* RTMP type */
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpRTMPrequest	5	/* RTMP request type */
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpNBP		2	/* NBP type */
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpATP		3	/* ATP type */
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpECHO		4	/* ECHO type */
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpIP		22	/* IP type */
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpARP		23	/* ARP type */
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ddpEIGRP        88      /* EIGRP over Appletalk */
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpKLAP		0x4b	/* Kinetics KLAP type */
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* AppleTalk Transaction Protocol */
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atATP {
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	control;
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	bitmap;
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	transID;
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	int32_t userData;
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpReqCode	0x40
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpRspCode	0x80
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpRelCode	0xC0
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpXO		0x20
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpEOM		0x10
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpSTS		0x08
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpFlagMask	0x3F
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpControlMask	0xF8
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpMaxNum	8
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	atpMaxData	578
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* AppleTalk Echo Protocol */
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atEcho {
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	echoFunction;
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	*echoData;
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define echoSkt		4		/* the echoer socket */
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define echoSize	1		/* size of echo header */
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define echoRequest	1		/* echo request */
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define echoReply	2		/* echo request */
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Name Binding Protocol */
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atNBP {
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	control;
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	id;
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct atNBPtuple {
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	net;
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	node;
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	skt;
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	enumerator;
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpBrRq		0x10
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpLkUp		0x20
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpLkUpReply	0x30
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpNIS		2
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpTupleMax	15
1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	nbpHeaderSize	2
1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define nbpTupleSize	5
1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define nbpSkt		2		/* NIS */
1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Routing Table Maint. Protocol */
1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	rtmpSkt		1	/* number of RTMP socket */
1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	rtmpSize	4	/* minimum size */
1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	rtmpTupleSize	3
1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Zone Information Protocol */
1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct zipHeader {
1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	command;
1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t	netcount;
1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipHeaderSize	2
1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipQuery	1
1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipReply	2
1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipTakedown	3
1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipBringup	4
1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ddpZIP		6
1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	zipSkt		6
1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	GetMyZone	7
1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	GetZoneList	8
1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * UDP port range used for ddp-in-udp encapsulation is 16512-16639
1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * for client sockets (128-255) and 200-327 for server sockets
1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * (0-127).  We also try to recognize the pre-April 88 server
1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * socket range of 768-895.
1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define atalk_port(p) \
1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	(((unsigned)((p) - 16512) < 128) || \
1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	 ((unsigned)((p) - 200) < 128) || \
1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	 ((unsigned)((p) - 768) < 128))
169