CAP/netat/abnbp.h

132 lines
3.0 KiB
C

/*
* $Author: djh $ $Date: 91/02/15 22:58:34 $
* $Header: abnbp.h,v 2.1 91/02/15 22:58:34 djh Rel $
* $Revision: 2.1 $
*/
/*
* abnbp.h - Name Binding Protocol definitions
*
* AppleTalk package for UNIX (4.2 BSD).
*
* Copyright (c) 1986, 1987 by The Trustees of Columbia University in the
* City of New York.
*
* Edit History:
*
* April 1, 1976 CCKIM Created
*
*/
/* PATCH: mips.ultrix.byteswap, djh@munnari.OZ.AU, 12/11/90 */
/* PATCH: XENIX/file.3, djh@munnari.OZ.AU, 20/11/90 */
/* NBP Information Socket - for NBP server */
#define nbpNIS 2
#define nbpBrRq 1
#define nbpLkUp 2
#define nbpLkUpReply 3
#define nbpRegister 0x7 /* register a name */
#define nbpDelete 0x8 /* delete a name */
#define nbpTickle 0x9 /* let them know socket is alive and well */
#define nbpStatusReply 0xa /* status on register/delete */
#define nbpLookAside 0xb /* Lookup via NIS */
/* maximum is 0xf */
/* status reply codes - all max out at 0xf - zero is reserved for noErr */
#define nbpSR_noErr 0x0
/* status reply codes for register */
#define nbpSR_access 0x1 /* permission denied */
#define nbpSR_overflow 0x2 /* name server overflow */
/* status reply codes for delete */
/* - uses nbpSR_access */
#define nbpSR_nsn 0x2 /* no such name */
#define nbpTupleMax 15
/* 3 for field lengths + 3*32 for the three names */
#define MAX_TUPLE_SIZE 99
/* control + id + Addrblock + enumerator */
#define nbpBaseSize (1+1+1+sizeof(AddrBlock))
/* nbpBaseSize + 3 for the three object lengths */
#define nbpMinSize (nbpBaseSize + 3)
typedef struct {
AddrBlock addr; /* address */
byte enume; /* enumerator */
byte name[MAX_TUPLE_SIZE]; /* the entity name */
} NBPTuple;
/* following would be really simple if we could use #if, but vms */
/* c doesn't like and hopefully someday... */
#ifndef BYTESWAPPED
#ifdef ultrix
# ifdef mips
# define BYTESWAPPED
# endif
#endif
# ifdef vax
# define BYTESWAPPED
# endif
#endif
#ifndef BYTESWAPPED
# ifdef ns16000
# define BYTESWAPPED
# endif
#endif
#ifndef BYTESWAPPED
# ifdef ns32000
# define BYTESWAPPED
# endif
#endif
/* add this in case sequent doesn't define nsxxxxx */
#ifndef BYTESWAPPED
# ifdef sequent
# define BYTESWAPPED
# endif
#endif
#ifndef BYTESWAPPED
# ifdef MIPSEL
# define BYTESWAPPED
# endif
#endif
#ifndef BYTESWAPPED
# ifdef i386
# define BYTESWAPPED
# endif
#endif
typedef struct {
#ifdef BYTESWAPPED
/* then these structure elements need to be reversed */
/* because the machines are byteswapped */
#ifdef AIX
unsigned tcnt : 4, /* tuple count */
#else AIX
byte tcnt : 4, /* tuple count */
#endif AIX
control : 4; /* control */
#else BYTESWAPPED
#ifdef AIX
unsigned control : 4, /* control */
#else AIX
byte control : 4, /* control */
#endif AIX
tcnt : 4; /* tuple count */
#endif BYTESWAPPED
byte id; /* NBP identifier */
NBPTuple tuple[nbpTupleMax]; /* start of first tuple, */
} NBP; /* space for rest */
typedef struct {
byte lapddp[lapSize+ddpSize];
NBP nbp;
} NBPpkt;