at.h revision 17254
1/*
2 * Copyright (c) 1990,1991 Regents of The University of Michigan.
3 * All Rights Reserved.
4 *
5 * Permission to use, copy, modify, and distribute this software and
6 * its documentation for any purpose and without fee is hereby granted,
7 * provided that the above copyright notice appears in all copies and
8 * that both that copyright notice and this permission notice appear
9 * in supporting documentation, and that the name of The University
10 * of Michigan not be used in advertising or publicity pertaining to
11 * distribution of the software without specific, written prior
12 * permission. This software is supplied as is without expressed or
13 * implied warranties of any kind.
14 *
15 *	Research Systems Unix Group
16 *	The University of Michigan
17 *	c/o Mike Clark
18 *	535 W. William Street
19 *	Ann Arbor, Michigan
20 *	+1-313-763-0525
21 *	netatalk@itd.umich.edu
22 */
23
24#ifndef __AT_HEADER__
25#define __AT_HEADER__
26/*
27 * Supported protocols
28 */
29#define ATPROTO_DDP	0
30#define ATPROTO_AARP	254
31
32/*
33 * Ethernet types, for DIX.
34 * These should really be in some global header file, but we can't
35 * count on them being there, and it's annoying to patch system files.
36 */
37#define ETHERTYPE_AT	0x809B		/* AppleTalk protocol */
38#define ETHERTYPE_AARP	0x80F3		/* AppleTalk ARP */
39
40#define DDP_MAXSZ	587
41
42/*
43 * If ATPORT_FIRST <= Port < ATPORT_RESERVED,
44 * Port was created by a privileged process.
45 * If ATPORT_RESERVED <= Port < ATPORT_LAST,
46 * Port was not necessarily created by a
47 * privileged process.
48 */
49#define ATPORT_FIRST	1
50#define ATPORT_RESERVED	128
51#define ATPORT_LAST	255
52
53/*
54 * AppleTalk address.
55 */
56struct at_addr {
57    u_short	s_net;
58    u_char	s_node;
59};
60
61#define ATADDR_ANYNET	(u_short)0x0000
62#define ATADDR_ANYNODE	(u_char)0x00
63#define ATADDR_ANYPORT	(u_char)0x00
64#define ATADDR_BCAST	(u_char)0xff		/* There is no BCAST for NET */
65
66/*
67 * Socket address, AppleTalk style.  We keep magic information in the
68 * zero bytes.  There are three types, NONE, CONFIG which has the phase
69 * and a net range, and IFACE which has the network address of an
70 * interface.  IFACE may be filled in by the client, and is filled in
71 * by the kernel.
72 */
73struct sockaddr_at {
74    u_char		sat_len;
75    u_char		sat_family;
76    u_char		sat_port;
77    struct at_addr	sat_addr;
78    char		sat_zero[ 8 ];	/* Hide a struct netrange in here */
79};
80
81struct netrange {
82    u_char		nr_phase;
83    u_short		nr_firstnet;
84    u_short		nr_lastnet;
85};
86
87#ifdef KERNEL
88extern struct domain	atalkdomain;
89extern struct protosw	atalksw[];
90#endif
91
92#endif __AT_HEADER__
93