4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Copyright (c) 1990,1991 Regents of The University of Michigan.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * All Rights Reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Permission to use, copy, modify, and distribute this software and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * its documentation for any purpose and without fee is hereby granted,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * provided that the above copyright notice appears in all copies and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * that both that copyright notice and this permission notice appear
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * in supporting documentation, and that the name of The University
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * of Michigan not be used in advertising or publicity pertaining to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * distribution of the software without specific, written prior
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * permission. This software is supplied as is without expressed or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * implied warranties of any kind.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Research Systems Unix Group
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * The University of Michigan
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * c/o Mike Clark
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * 535 W. William Street
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Ann Arbor, Michigan
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * +1-313-763-0525
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * netatalk@itd.umich.edu
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __AT_HEADER__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __AT_HEADER__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Supported protocols
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATPROTO_DDP 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATPROTO_AARP 254
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Ethernet types, for DIX.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * These should really be in some global header file, but we can't
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * count on them being there, and it's annoying to patch system files.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ETHERTYPE_AT 0x809B /* AppleTalk protocol */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ETHERTYPE_AARP 0x80F3 /* AppleTalk ARP */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DDP_MAXSZ 587
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * If ATPORT_FIRST <= Port < ATPORT_RESERVED,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Port was created by a privileged process.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * If ATPORT_RESERVED <= Port < ATPORT_LAST,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Port was not necessarily created by a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * privileged process.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATPORT_FIRST 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATPORT_RESERVED 128
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATPORT_LAST 255
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * AppleTalk address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct at_addr {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_short s_net;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_char s_node;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATADDR_ANYNET (u_short)0x0000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATADDR_ANYNODE (u_char)0x00
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATADDR_ANYPORT (u_char)0x00
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATADDR_BCAST (u_char)0xff /* There is no BCAST for NET */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct netrange {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_char nr_phase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_short nr_firstnet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_short nr_lastnet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Socket address, AppleTalk style. We keep magic information in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * zero bytes. There are three types, NONE, CONFIG which has the phase
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * and a net range, and IFACE which has the network address of an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * interface. IFACE may be filled in by the client, and is filled in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * by the kernel.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct sockaddr_at {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_char sat_len;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_char sat_family;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync u_char sat_port;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync struct at_addr sat_addr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync struct netrange r_netrange;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char r_zero[ 8 ]; /* Hide a struct netrange in here */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } sat_range;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define sat_zero sat_range.r_zero
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* !__AT_HEADER__ */