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 | * [email protected]
|
---|
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 | */
|
---|
56 | struct 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 | struct netrange {
|
---|
67 | u_char nr_phase;
|
---|
68 | u_short nr_firstnet;
|
---|
69 | u_short nr_lastnet;
|
---|
70 | };
|
---|
71 |
|
---|
72 | /*
|
---|
73 | * Socket address, AppleTalk style. We keep magic information in the
|
---|
74 | * zero bytes. There are three types, NONE, CONFIG which has the phase
|
---|
75 | * and a net range, and IFACE which has the network address of an
|
---|
76 | * interface. IFACE may be filled in by the client, and is filled in
|
---|
77 | * by the kernel.
|
---|
78 | */
|
---|
79 | struct sockaddr_at {
|
---|
80 | u_char sat_len;
|
---|
81 | u_char sat_family;
|
---|
82 | u_char sat_port;
|
---|
83 | struct at_addr sat_addr;
|
---|
84 | union {
|
---|
85 | struct netrange r_netrange;
|
---|
86 | char r_zero[ 8 ]; /* Hide a struct netrange in here */
|
---|
87 | } sat_range;
|
---|
88 | };
|
---|
89 |
|
---|
90 | #define sat_zero sat_range.r_zero
|
---|
91 |
|
---|
92 | #endif /* !__AT_HEADER__ */
|
---|