Home | History | Annotate | Download | only in netatalk
      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 (at) itd.umich.edu
     22  */
     23 
     24 #ifndef __AT_HEADER__
     25 #define __AT_HEADER__
     26 /*
     27  * Supported protocols
     28  */
     29 #define ATPROTO_DDP	0
     30 #define ATPROTO_AARP	254
     31 
     32 /*
     33  * Ethernet types, for DIX.
     34  * These should really be in some global header file, but we can't
     35  * count on them being there, and it's annoying to patch system files.
     36  */
     37 #define ETHERTYPE_AT	0x809B		/* AppleTalk protocol */
     38 #define ETHERTYPE_AARP	0x80F3		/* AppleTalk ARP */
     39 
     40 #define DDP_MAXSZ	587
     41 
     42 /*
     43  * If ATPORT_FIRST <= Port < ATPORT_RESERVED,
     44  * Port was created by a privileged process.
     45  * If ATPORT_RESERVED <= Port < ATPORT_LAST,
     46  * Port was not necessarily created by a
     47  * privileged process.
     48  */
     49 #define ATPORT_FIRST	1
     50 #define ATPORT_RESERVED	128
     51 #define ATPORT_LAST	255
     52 
     53 /*
     54  * AppleTalk address.
     55  */
     56 struct at_addr {
     57     u_short	s_net;
     58     u_char	s_node;
     59 };
     60 
     61 #define ATADDR_ANYNET	(u_short)0x0000
     62 #define ATADDR_ANYNODE	(u_char)0x00
     63 #define ATADDR_ANYPORT	(u_char)0x00
     64 #define ATADDR_BCAST	(u_char)0xff		/* There is no BCAST for NET */
     65 
     66 struct netrange {
     67     u_char		nr_phase;
     68     u_short		nr_firstnet;
     69     u_short		nr_lastnet;
     70 };
     71 
     72 /*
     73  * Socket address, AppleTalk style.  We keep magic information in the
     74  * zero bytes.  There are three types, NONE, CONFIG which has the phase
     75  * and a net range, and IFACE which has the network address of an
     76  * interface.  IFACE may be filled in by the client, and is filled in
     77  * by the kernel.
     78  */
     79 struct sockaddr_at {
     80     u_char		sat_len;
     81     u_char		sat_family;
     82     u_char		sat_port;
     83     struct at_addr	sat_addr;
     84     union {
     85 	struct netrange r_netrange;
     86     	char		r_zero[ 8 ];	/* Hide a struct netrange in here */
     87     } sat_range;
     88 };
     89 
     90 #define sat_zero sat_range.r_zero
     91 
     92 #endif /* !__AT_HEADER__ */
     93