[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]

FreeBSD/Linux Kernel Cross Reference
sys/netatalk/ddp.h

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  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  *      netatalk@itd.umich.edu
 22  *
 23  * $FreeBSD: src/sys/netatalk/ddp.h,v 1.4 2007/06/28 12:54:58 rwatson Exp $
 24  */
 25 
 26 #ifndef _NETATALK_DDP_H_
 27 #define _NETATALK_DDP_H_
 28 
 29 /*-
 30  * <-1byte(8bits) ->
 31  * +---------------+
 32  * | 0 | hopc  |len|
 33  * +---------------+
 34  * | len (cont)    |
 35  * +---------------+
 36  * |               |
 37  * +- DDP csum    -+
 38  * |               |
 39  * +---------------+
 40  * |               |
 41  * +- Dest NET    -+
 42  * |               |
 43  * +---------------+
 44  * |               |
 45  * +- Src NET     -+
 46  * |               |
 47  * +---------------+
 48  * | Dest NODE     |
 49  * +---------------+
 50  * | Src NODE      |
 51  * +---------------+
 52  * | Dest PORT     |
 53  * +---------------+
 54  * | Src PORT      |
 55  * +---------------+
 56  *
 57  * On Apples, there is also a ddp_type field, after src_port.  However, under
 58  * this unix implementation, user level processes need to be able to set the
 59  * ddp_type.  In later revisions, the ddp_type may only be available in a
 60  * raw_appletalk interface.
 61  */
 62 
 63 struct elaphdr {
 64         u_char  el_dnode;
 65         u_char  el_snode;
 66         u_char  el_type;
 67 } __packed;
 68 
 69 #define SZ_ELAPHDR      3
 70 
 71 #define ELAP_DDPSHORT   0x01
 72 #define ELAP_DDPEXTEND  0x02
 73 
 74 /*
 75  * Extended DDP header. Includes sickness for dealing with arbitrary
 76  * bitfields on a little-endian arch.
 77  */
 78 struct ddpehdr {
 79         union {
 80                 struct {
 81 #if BYTE_ORDER == BIG_ENDIAN
 82                         unsigned        dub_pad:2;
 83                         unsigned        dub_hops:4;
 84                         unsigned        dub_len:10;
 85                         unsigned        dub_sum:16;
 86 #endif
 87 #if BYTE_ORDER == LITTLE_ENDIAN
 88                         unsigned        dub_sum:16;
 89                         unsigned        dub_len:10;
 90                         unsigned        dub_hops:4;
 91                         unsigned        dub_pad:2;
 92 #endif
 93                 } __packed du_bits;
 94                 unsigned        du_bytes;
 95         } deh_u;
 96         u_short deh_dnet;
 97         u_short deh_snet;
 98         u_char  deh_dnode;
 99         u_char  deh_snode;
100         u_char  deh_dport;
101         u_char  deh_sport;
102 } __packed;
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 
109 #define DDP_MAXHOPS     15
110 
111 struct ddpshdr {
112         union {
113                 struct {
114 #if BYTE_ORDER == BIG_ENDIAN
115                         unsigned        dub_pad:6;
116                         unsigned        dub_len:10;
117                         unsigned        dub_dport:8;
118                         unsigned        dub_sport:8;
119 #endif
120 #if BYTE_ORDER == LITTLE_ENDIAN
121                         unsigned        dub_sport:8;
122                         unsigned        dub_dport:8;
123                         unsigned        dub_len:10;
124                         unsigned        dub_pad:6;
125 #endif
126                 } __packed du_bits;
127                 unsigned        du_bytes;
128         } dsh_u;
129 } __packed;
130 
131 #define dsh_pad         dsh_u.du_bits.dub_pad
132 #define dsh_len         dsh_u.du_bits.dub_len
133 #define dsh_dport       dsh_u.du_bits.dub_dport
134 #define dsh_sport       dsh_u.du_bits.dub_sport
135 #define dsh_bytes       dsh_u.du_bytes
136 
137 #endif /* _NETATALK_DDP_H_ */
138 

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.