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