root / lab4 / .minix-src / include / netatalk / at.h @ 14
History | View | Annotate | Download (2.83 KB)
1 | 13 | up20180614 | /* $NetBSD: at.h,v 1.8 2014/12/02 19:33:44 christos 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 | uint16_t s_net; |
||
63 | uint8_t s_node; |
||
64 | }; |
||
65 | |||
66 | #define ATADDR_ANYNET (uint16_t)0x0000 |
||
67 | #define ATADDR_ANYNODE (uint8_t)0x00 |
||
68 | #define ATADDR_ANYPORT (uint8_t)0x00 |
||
69 | #define ATADDR_BCAST (uint8_t)0xff /* There is no BCAST for NET */ |
||
70 | |||
71 | struct netrange {
|
||
72 | uint8_t nr_phase; |
||
73 | uint16_t nr_firstnet; |
||
74 | uint16_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 | uint8_t sat_len; |
||
86 | sa_family_t sat_family; |
||
87 | uint8_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 | #include <sys/protosw.h> |
||
100 | |||
101 | extern struct domain atalkdomain; |
||
102 | extern const struct protosw atalksw[]; |
||
103 | #endif
|
||
104 | |||
105 | #if defined(_KERNEL) || defined(_TEST)
|
||
106 | #define ATALK_ADDRSTRLEN 10 |
||
107 | |||
108 | extern struct domain atalkdomain; |
||
109 | int at_print(char *, size_t, const struct at_addr *); |
||
110 | int sat_print(char *, size_t, const void *); |
||
111 | #endif
|
||
112 | |||
113 | #endif /* !_NETATALK_AT_H_ */ |