No empty .Rs/.Re
[netbsd-mini2440.git] / sys / netatalk / ddp.h
blobe3cb8ae4a7fc9f8d70da642b9a1c80fa868a7890
1 /* $NetBSD: ddp.h,v 1.1 1997/04/02 21:31:08 christos Exp $ */
3 /*
4 * Copyright (c) 1990,1991 Regents of The University of Michigan.
5 * All Rights Reserved.
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.
17 * This product includes software developed by the University of
18 * California, Berkeley and its contributors.
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
29 #ifndef _NETATALK_DDP_H_
30 #define _NETATALK_DDP_H_
32 #ifndef BYTE_ORDER
33 #error "Undefined Byte order"
34 #endif
37 * <-1byte(8bits) ->
38 * +---------------+
39 * | 0 | hopc |len|
40 * +---------------+
41 * | len (cont) |
42 * +---------------+
43 * | |
44 * +- DDP csum -+
45 * | |
46 * +---------------+
47 * | |
48 * +- Dest NET -+
49 * | |
50 * +---------------+
51 * | |
52 * +- Src NET -+
53 * | |
54 * +---------------+
55 * | Dest NODE |
56 * +---------------+
57 * | Src NODE |
58 * +---------------+
59 * | Dest PORT |
60 * +---------------+
61 * | Src PORT |
62 * +---------------+
64 * On Apples, there is also a ddp_type field, after src_port. However,
65 * under this unix implementation, user level processes need to be able
66 * to set the ddp_type. In later revisions, the ddp_type may only be
67 * available in a raw_appletalk interface.
70 struct elaphdr {
71 u_char el_dnode;
72 u_char el_snode;
73 u_char el_type;
76 #define SZ_ELAPHDR 3
78 #define ELAP_DDPSHORT 0x01
79 #define ELAP_DDPEXTEND 0x02
82 * Extended DDP header. Includes sickness for dealing with arbitrary
83 * bitfields on a little-endian arch.
85 struct ddpehdr {
86 union {
87 struct {
88 #if BYTE_ORDER == BIG_ENDIAN
89 unsigned dub_pad:2;
90 unsigned dub_hops:4;
91 unsigned dub_len:10;
92 unsigned dub_sum:16;
93 #endif
94 #if BYTE_ORDER == LITTLE_ENDIAN
95 unsigned dub_sum:16;
96 unsigned dub_len:10;
97 unsigned dub_hops:4;
98 unsigned dub_pad:2;
99 #endif
100 } du_bits;
101 unsigned du_bytes;
102 } deh_u;
103 #define deh_pad deh_u.du_bits.dub_pad
104 #define deh_hops deh_u.du_bits.dub_hops
105 #define deh_len deh_u.du_bits.dub_len
106 #define deh_sum deh_u.du_bits.dub_sum
107 #define deh_bytes deh_u.du_bytes
108 u_short deh_dnet;
109 u_short deh_snet;
110 u_char deh_dnode;
111 u_char deh_snode;
112 u_char deh_dport;
113 u_char deh_sport;
116 #define DDP_MAXHOPS 15
118 struct ddpshdr {
119 union {
120 struct {
121 #if BYTE_ORDER == BIG_ENDIAN
122 unsigned dub_pad:6;
123 unsigned dub_len:10;
124 unsigned dub_dport:8;
125 unsigned dub_sport:8;
126 #endif
127 #if BYTE_ORDER == LITTLE_ENDIAN
128 unsigned dub_sport:8;
129 unsigned dub_dport:8;
130 unsigned dub_len:10;
131 unsigned dub_pad:6;
132 #endif
133 } du_bits;
134 unsigned du_bytes;
135 } dsh_u;
136 #define dsh_pad dsh_u.du_bits.dub_pad
137 #define dsh_len dsh_u.du_bits.dub_len
138 #define dsh_dport dsh_u.du_bits.dub_dport
139 #define dsh_sport dsh_u.du_bits.dub_sport
140 #define dsh_bytes dsh_u.du_bytes
143 #endif /* !_NETATALK_DDP_H_ */