1 /* $NetBSD: at.h,v 1.4 2000/07/28 12:13:33 kleink 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_AT_H_ 30 #define _NETATALK_AT_H_ 31 32 #include <sys/ansi.h> 33 34 #ifndef sa_family_t 35 typedef __sa_family_t sa_family_t; 36 #define sa_family_t __sa_family_t 37 #endif 38 39 /* 40 * Supported protocols 41 */ 42 #define ATPROTO_DDP 0 43 #define ATPROTO_AARP 254 44 45 #define DDP_MAXSZ 587 46 47 /* 48 * If ATPORT_FIRST <= Port < ATPORT_RESERVED, 49 * Port was created by a privileged process. 50 * If ATPORT_RESERVED <= Port < ATPORT_LAST, 51 * Port was not necessarily created by a 52 * privileged process. 53 */ 54 #define ATPORT_FIRST 1 55 #define ATPORT_RESERVED 128 56 #define ATPORT_LAST 255 57 58 /* 59 * AppleTalk address. 60 */ 61 struct at_addr { 62 u_int16_t s_net; 63 u_int8_t s_node; 64 }; 65 66 #define ATADDR_ANYNET (u_int16_t)0x0000 67 #define ATADDR_ANYNODE (u_int8_t)0x00 68 #define ATADDR_ANYPORT (u_int8_t)0x00 69 #define ATADDR_BCAST (u_int8_t)0xff /* There is no BCAST for NET */ 70 71 struct netrange { 72 u_int8_t nr_phase; 73 u_int16_t nr_firstnet; 74 u_int16_t nr_lastnet; 75 }; 76 77 /* 78 * Socket address, AppleTalk style. We keep magic information in the 79 * zero bytes. There are three types, NONE, CONFIG which has the phase 80 * and a net range, and IFACE which has the network address of an 81 * interface. IFACE may be filled in by the client, and is filled in 82 * by the kernel. 83 */ 84 struct sockaddr_at { 85 u_int8_t sat_len; 86 sa_family_t sat_family; 87 u_int8_t sat_port; 88 struct at_addr sat_addr; 89 union { 90 struct netrange r_netrange; 91 char r_zero[8]; /* Hide a struct netrange in 92 * here */ 93 } sat_range; 94 }; 95 96 #define sat_zero sat_range.r_zero 97 98 #ifdef _KERNEL 99 extern struct domain atalkdomain; 100 extern struct protosw atalksw[]; 101 #endif 102 103 #endif /* _NETATALK_AT_H_ */ 104