xref: /netbsd/sys/netatalk/at.h (revision bf9ec67e)
1 /*	$NetBSD: at.h,v 1.4 2000/07/28 12:13:33 kleink Exp $	*/
2 
3 /*
4  * Copyright (c) 1990,1991 Regents of The University of Michigan.
5  * All Rights Reserved.
6  *
7  * Permission to use, copy, modify, and distribute this software and
8  * its documentation for any purpose and without fee is hereby granted,
9  * provided that the above copyright notice appears in all copies and
10  * that both that copyright notice and this permission notice appear
11  * in supporting documentation, and that the name of The University
12  * of Michigan not be used in advertising or publicity pertaining to
13  * distribution of the software without specific, written prior
14  * permission. This software is supplied as is without expressed or
15  * implied warranties of any kind.
16  *
17  * This product includes software developed by the University of
18  * California, Berkeley and its contributors.
19  *
20  *	Research Systems Unix Group
21  *	The University of Michigan
22  *	c/o Wesley Craig
23  *	535 W. William Street
24  *	Ann Arbor, Michigan
25  *	+1-313-764-2278
26  *	netatalk@umich.edu
27  */
28 
29 #ifndef _NETATALK_AT_H_
30 #define _NETATALK_AT_H_
31 
32 #include <sys/ansi.h>
33 
34 #ifndef sa_family_t
35 typedef __sa_family_t	sa_family_t;
36 #define sa_family_t	__sa_family_t
37 #endif
38 
39 /*
40  * Supported protocols
41  */
42 #define ATPROTO_DDP	0
43 #define ATPROTO_AARP	254
44 
45 #define DDP_MAXSZ	587
46 
47 /*
48  * If ATPORT_FIRST <= Port < ATPORT_RESERVED,
49  * Port was created by a privileged process.
50  * If ATPORT_RESERVED <= Port < ATPORT_LAST,
51  * Port was not necessarily created by a
52  * privileged process.
53  */
54 #define ATPORT_FIRST	1
55 #define ATPORT_RESERVED	128
56 #define ATPORT_LAST	255
57 
58 /*
59  * AppleTalk address.
60  */
61 struct at_addr {
62 	u_int16_t         s_net;
63 	u_int8_t          s_node;
64 };
65 
66 #define ATADDR_ANYNET	(u_int16_t)0x0000
67 #define ATADDR_ANYNODE	(u_int8_t)0x00
68 #define ATADDR_ANYPORT	(u_int8_t)0x00
69 #define ATADDR_BCAST	(u_int8_t)0xff	/* There is no BCAST for NET */
70 
71 struct netrange {
72 	u_int8_t	nr_phase;
73 	u_int16_t	nr_firstnet;
74 	u_int16_t	nr_lastnet;
75 };
76 
77 /*
78  * Socket address, AppleTalk style.  We keep magic information in the
79  * zero bytes.  There are three types, NONE, CONFIG which has the phase
80  * and a net range, and IFACE which has the network address of an
81  * interface.  IFACE may be filled in by the client, and is filled in
82  * by the kernel.
83  */
84 struct sockaddr_at {
85 	u_int8_t	sat_len;
86 	sa_family_t	sat_family;
87 	u_int8_t        sat_port;
88 	struct at_addr  sat_addr;
89 	union {
90 		struct netrange r_netrange;
91 		char            r_zero[8];	/* Hide a struct netrange in
92 						 * here */
93 	} sat_range;
94 };
95 
96 #define sat_zero sat_range.r_zero
97 
98 #ifdef _KERNEL
99 extern struct domain atalkdomain;
100 extern struct protosw atalksw[];
101 #endif
102 
103 #endif	/* _NETATALK_AT_H_ */
104