The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

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

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: ddp.h,v 1.1 1997/04/02 21:31:08 christos 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  * This product includes software developed by the University of
   18  * California, Berkeley and its contributors.
   19  *
   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
   27  */
   28 
   29 #ifndef _NETATALK_DDP_H_
   30 #define _NETATALK_DDP_H_ 1
   31 
   32 #ifndef BYTE_ORDER
   33   #error "Undefined Byte order"
   34 #endif
   35 
   36 /*
   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  * +---------------+
   63  *
   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.
   68  */
   69 
   70 struct elaphdr {
   71         u_char          el_dnode;
   72         u_char          el_snode;
   73         u_char          el_type;
   74 };
   75 
   76 #define SZ_ELAPHDR      3
   77 
   78 #define ELAP_DDPSHORT   0x01
   79 #define ELAP_DDPEXTEND  0x02
   80 
   81 /*
   82  * Extended DDP header. Includes sickness for dealing with arbitrary
   83  * bitfields on a little-endian arch.
   84  */
   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;
  114 };
  115 
  116 #define DDP_MAXHOPS     15
  117 
  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
  141 };
  142 
  143 #endif /* _NETATALK_DDP_H_ */

Cache object: 14173cda84ed22c8c397bf36e680d491


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


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