[BACK]Return to ddp.h CVS log [TXT][DIR] Up to [local] / sys / netatalk

Annotation of sys/netatalk/ddp.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: ddp.h,v 1.2 2005/12/11 17:21:53 deraadt 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:  *     Research Systems Unix Group
                     18:  *     The University of Michigan
                     19:  *     c/o Mike Clark
                     20:  *     535 W. William Street
                     21:  *     Ann Arbor, Michigan
                     22:  *     +1-313-763-0525
                     23:  *     netatalk@itd.umich.edu
                     24:  */
                     25:
                     26: /*
                     27:  * The following is the contents of the COPYRIGHT file from the
                     28:  * netatalk-1.4a2 distribution, from which this file is derived.
                     29:  */
                     30: /*
                     31:  * Copyright (c) 1990,1996 Regents of The University of Michigan.
                     32:  *
                     33:  * All Rights Reserved.
                     34:  *
                     35:  *    Permission to use, copy, modify, and distribute this software and
                     36:  *    its documentation for any purpose and without fee is hereby granted,
                     37:  *    provided that the above copyright notice appears in all copies and
                     38:  *    that both that copyright notice and this permission notice appear
                     39:  *    in supporting documentation, and that the name of The University
                     40:  *    of Michigan not be used in advertising or publicity pertaining to
                     41:  *    distribution of the software without specific, written prior
                     42:  *    permission. This software is supplied as is without expressed or
                     43:  *    implied warranties of any kind.
                     44:  *
                     45:  * This product includes software developed by the University of
                     46:  * California, Berkeley and its contributors.
                     47:  *
                     48:  * Solaris code is encumbered by the following:
                     49:  *
                     50:  *     Copyright (C) 1996 by Sun Microsystems Computer Co.
                     51:  *
                     52:  *     Permission to use, copy, modify, and distribute this software and
                     53:  *     its documentation for any purpose and without fee is hereby
                     54:  *     granted, provided that the above copyright notice appear in all
                     55:  *     copies and that both that copyright notice and this permission
                     56:  *     notice appear in supporting documentation.  This software is
                     57:  *     provided "as is" without express or implied warranty.
                     58:  *
                     59:  * Research Systems Unix Group
                     60:  * The University of Michigan
                     61:  * c/o Wesley Craig
                     62:  * 535 W. William Street
                     63:  * Ann Arbor, Michigan
                     64:  * +1-313-764-2278
                     65:  * netatalk@umich.edu
                     66:  */
                     67: /*
                     68:  * None of the Solaris code mentioned is included in OpenBSD.
                     69:  * This code also relies heavily on previous effort in FreeBSD and NetBSD.
                     70:  */
                     71:
                     72: #ifndef _NETATALK_DDP_H_
                     73: #define _NETATALK_DDP_H_ 1
                     74:
                     75: /*
                     76:  * <-1byte(8bits) ->
                     77:  * +---------------+
                     78:  * | 0 | hopc  |len|
                     79:  * +---------------+
                     80:  * | len (cont)    |
                     81:  * +---------------+
                     82:  * |               |
                     83:  * +- DDP csum    -+
                     84:  * |               |
                     85:  * +---------------+
                     86:  * |               |
                     87:  * +- Dest NET    -+
                     88:  * |               |
                     89:  * +---------------+
                     90:  * |               |
                     91:  * +- Src NET     -+
                     92:  * |               |
                     93:  * +---------------+
                     94:  * | Dest NODE     |
                     95:  * +---------------+
                     96:  * | Src NODE      |
                     97:  * +---------------+
                     98:  * | Dest PORT     |
                     99:  * +---------------+
                    100:  * | Src PORT      |
                    101:  * +---------------+
                    102:  *
                    103:  * On Apples, there is also a ddp_type field, after src_port. However,
                    104:  * under this unix implementation, user level processes need to be able
                    105:  * to set the ddp_type. In later revisions, the ddp_type may only be
                    106:  * available in a raw_appletalk interface.
                    107:  */
                    108:
                    109: struct elaphdr {
                    110:     u_char     el_dnode;
                    111:     u_char     el_snode;
                    112:     u_char     el_type;
                    113: };
                    114:
                    115: #define        SZ_ELAPHDR      3
                    116:
                    117: #define ELAP_DDPSHORT  0x01
                    118: #define ELAP_DDPEXTEND 0x02
                    119:
                    120: /*
                    121:  * Extended DDP header. Includes sickness for dealing with arbitrary
                    122:  * bitfields on a little-endian arch.
                    123:  */
                    124: struct ddpehdr {
                    125:     union {
                    126:        struct {
                    127: #if BYTE_ORDER == BIG_ENDIAN
                    128:     unsigned int       dub_pad:2;
                    129:     unsigned int       dub_hops:4;
                    130:     unsigned int       dub_len:10;
                    131:     unsigned int       dub_sum:16;
                    132: #endif
                    133: #if BYTE_ORDER == LITTLE_ENDIAN
                    134:     unsigned int       dub_sum:16;
                    135:     unsigned int       dub_len:10;
                    136:     unsigned int       dub_hops:4;
                    137:     unsigned int       dub_pad:2;
                    138: #endif
                    139:        } du_bits;
                    140:        unsigned int    du_bytes;
                    141:     } deh_u;
                    142: #define deh_pad                deh_u.du_bits.dub_pad
                    143: #define deh_hops       deh_u.du_bits.dub_hops
                    144: #define deh_len                deh_u.du_bits.dub_len
                    145: #define deh_sum                deh_u.du_bits.dub_sum
                    146: #define deh_bytes      deh_u.du_bytes
                    147:     u_short            deh_dnet;
                    148:     u_short            deh_snet;
                    149:     u_char             deh_dnode;
                    150:     u_char             deh_snode;
                    151:     u_char             deh_dport;
                    152:     u_char             deh_sport;
                    153: };
                    154:
                    155: #define DDP_MAXHOPS    15
                    156:
                    157: struct ddpshdr {
                    158:     union {
                    159:        struct {
                    160: #if BYTE_ORDER == BIG_ENDIAN
                    161:     unsigned int       dub_pad:6;
                    162:     unsigned int       dub_len:10;
                    163:     unsigned int       dub_dport:8;
                    164:     unsigned int       dub_sport:8;
                    165: #endif
                    166: #if BYTE_ORDER == LITTLE_ENDIAN
                    167:     unsigned int       dub_sport:8;
                    168:     unsigned int       dub_dport:8;
                    169:     unsigned int       dub_len:10;
                    170:     unsigned int       dub_pad:6;
                    171: #endif
                    172:        } du_bits;
                    173:        unsigned int    du_bytes;
                    174:     } dsh_u;
                    175: #define dsh_pad                dsh_u.du_bits.dub_pad
                    176: #define dsh_len                dsh_u.du_bits.dub_len
                    177: #define dsh_dport      dsh_u.du_bits.dub_dport
                    178: #define dsh_sport      dsh_u.du_bits.dub_sport
                    179: #define dsh_bytes      dsh_u.du_bytes
                    180: };
                    181: #endif /* _NETATALK_DDP_H_ */

CVSweb