Annotation of sys/netatalk/ddp.h, Revision 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