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

Cache object: 5c79339de1920e524cb986142229c021


[ 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.