netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
sys/netatalk/ddp.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 1990,1991 Regents of The University of Michigan.
3 * All Rights Reserved. See COPYRIGHT.
4 */
5
6/*
7 * <-1byte(8bits) ->
8 * +---------------+
9 * | 0 | hopc |len|
10 * +---------------+
11 * | len (cont) |
12 * +---------------+
13 * | |
14 * +- DDP csum -+
15 * | |
16 * +---------------+
17 * | |
18 * +- Dest NET -+
19 * | |
20 * +---------------+
21 * | |
22 * +- Src NET -+
23 * | |
24 * +---------------+
25 * | Dest NODE |
26 * +---------------+
27 * | Src NODE |
28 * +---------------+
29 * | Dest PORT |
30 * +---------------+
31 * | Src PORT |
32 * +---------------+
33 *
34 * On Apples, there is also a ddp_type field, after src_port. However,
35 * under this unix implementation, user level processes need to be able
36 * to set the ddp_type. In later revisions, the ddp_type may only be
37 * available in a raw_appletalk interface.
38 */
39
40#ifndef _NETATALK_DDP_H
41#define _NETATALK_DDP_H 1
42
43#include "endian.h"
44
45struct elaphdr {
46 unsigned char el_dnode;
47 unsigned char el_snode;
48 unsigned char el_type;
49};
50
51#define SZ_ELAPHDR 3
52
53#define ELAP_DDPSHORT 0x01
54#define ELAP_DDPEXTEND 0x02
55
56/*
57 * Extended DDP header. Includes sickness for dealing with arbitrary
58 * bitfields on a little-endian arch.
59 */
60struct ddpehdr {
61 union {
62 struct {
63#if BYTE_ORDER == BIG_ENDIAN
64 unsigned dub_pad: 2;
65 unsigned dub_hops: 4;
66 unsigned dub_len: 10;
67 unsigned dub_sum: 16;
68#else /* BYTE_ORDER == BIG_ENDIAN */
69#if BYTE_ORDER == LITTLE_ENDIAN
70 unsigned dub_sum: 16;
71 unsigned dub_len: 10;
72 unsigned dub_hops: 4;
73 unsigned dub_pad: 2;
74#else /* BYTE_ORDER == LITTLE_ENDIAN */
75 OOPS!
76#endif /* BYTE_ORDER == LITTLE_ENDIAN */
77#endif /* BYTE_ORDER == BIG_ENDIAN */
79 unsigned du_bytes;
81#define deh_pad deh_u.du_bits.dub_pad
82#define deh_hops deh_u.du_bits.dub_hops
83#define deh_len deh_u.du_bits.dub_len
84#define deh_sum deh_u.du_bits.dub_sum
85#define deh_bytes deh_u.du_bytes
86 unsigned short deh_dnet;
87 unsigned short deh_snet;
88 unsigned char deh_dnode;
89 unsigned char deh_snode;
90 unsigned char deh_dport;
91 unsigned char deh_sport;
92};
93
94#define SZ_DDPEHDR 12
95
96#define DDP_MAXHOPS 15
97
98struct ddpshdr {
99 union {
100 struct {
101#if BYTE_ORDER == BIG_ENDIAN
102 unsigned dub_pad: 6;
103 unsigned dub_len: 10;
104 unsigned dub_dport: 8;
105 unsigned dub_sport: 8;
106#endif /* BYTE_ORDER == BIG_ENDIAN */
107#if BYTE_ORDER == LITTLE_ENDIAN
108 unsigned dub_sport: 8;
109 unsigned dub_dport: 8;
110 unsigned dub_len: 10;
111 unsigned dub_pad: 6;
112#endif /* BYTE_ORDER == LITTLE_ENDIAN */
114 unsigned du_bytes;
116#define dsh_pad dsh_u.du_bits.dub_pad
117#define dsh_len dsh_u.du_bits.dub_len
118#define dsh_dport dsh_u.du_bits.dub_dport
119#define dsh_sport dsh_u.du_bits.dub_sport
120#define dsh_bytes dsh_u.du_bytes
121};
122#define SZ_DDPSHDR 4
123
124#endif /* netatalk/ddp.h */
Definition sys/netatalk/ddp.h:60
unsigned char deh_dport
Definition sys/netatalk/ddp.h:90
unsigned short deh_dnet
Definition sys/netatalk/ddp.h:86
unsigned char deh_dnode
Definition sys/netatalk/ddp.h:88
unsigned dub_pad
Definition sys/netatalk/ddp.h:73
unsigned du_bytes
Definition sys/netatalk/ddp.h:79
unsigned char deh_sport
Definition sys/netatalk/ddp.h:91
union ddpehdr::@243272307121210173143377014153364206303202350247 deh_u
unsigned dub_hops
Definition sys/netatalk/ddp.h:72
unsigned dub_len
Definition sys/netatalk/ddp.h:71
unsigned short deh_snet
Definition sys/netatalk/ddp.h:87
unsigned dub_sum
Definition sys/netatalk/ddp.h:70
struct ddpehdr::@243272307121210173143377014153364206303202350247::@063162066016052021073242060213237353271112330257 du_bits
unsigned char deh_snode
Definition sys/netatalk/ddp.h:89
Definition sys/netatalk/ddp.h:98
unsigned dub_len
Definition sys/netatalk/ddp.h:110
struct ddpshdr::@244036062155212254351342367133014356044160052121::@132215232230347067323107372330303163256062324046 du_bits
union ddpshdr::@244036062155212254351342367133014356044160052121 dsh_u
unsigned dub_pad
Definition sys/netatalk/ddp.h:111
unsigned dub_dport
Definition sys/netatalk/ddp.h:109
unsigned dub_sport
Definition sys/netatalk/ddp.h:108
unsigned du_bytes
Definition sys/netatalk/ddp.h:114
Definition sys/netatalk/ddp.h:45
unsigned char el_dnode
Definition sys/netatalk/ddp.h:46
unsigned char el_snode
Definition sys/netatalk/ddp.h:47
unsigned char el_type
Definition sys/netatalk/ddp.h:48