12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1992, 1994, 1996
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code distributions
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * retain the above copyright notice and this paragraph in its entirety, (2)
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions including binary code include the above copyright notice and
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this paragraph in its entirety in the documentation or other materials
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided with the distribution, and (3) all advertising materials mentioning
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * features or use of this software display the following acknowledgement:
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ``This product includes software developed by the University of California,
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the University nor the names of its contributors may be used to endorse
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * or promote products derived from this software without specific prior
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission.
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * @(#) $Header: /tcpdump/master/tcpdump/decnet.h,v 1.11 2002/12/11 07:13:50 guy Exp $ (LBL)
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef WIN32
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef u_int8_t byte[1];		/* single byte field */
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the keyword 'byte' generates conflicts in Windows
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef unsigned char Byte[1];		/* single byte field */
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define byte Byte
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* WIN32 */
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef u_int8_t word[2];		/* 2 byte field */
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef u_int8_t longword[4];		/* 4 bytes field */
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Definitions for DECNET Phase IV protocol headers
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectunion etheraddress {
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t   dne_addr[6];		/* full ethernet address */
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct {
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		u_int8_t dne_hiord[4];	/* DECnet HIORD prefix */
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		u_int8_t dne_nodeaddr[2]; /* DECnet node address */
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	} dne_remote;
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef union etheraddress etheraddr;	/* Ethernet address */
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define HIORD 0x000400aa		/* high 32-bits of address (swapped) */
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define AREAMASK	0176000		/* mask for area field */
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AREASHIFT	10		/* bit-offset for area field */
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define NODEMASK	01777		/* mask for node address field */
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DN_MAXADDL	20		/* max size of DECnet address */
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct dn_naddr {
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t	a_len;		/* length of address */
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t a_addr[DN_MAXADDL]; /* address as bytes */
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Define long and short header formats.
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct shorthdr
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	sh_flags;		/* route flags */
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	sh_dst;			/* destination node address */
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	sh_src;			/* source node address */
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	sh_visits;		/* visit count */
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct longhdr
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_flags;		/* route flags */
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_darea;		/* destination area (reserved) */
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_dsarea;		/* destination subarea (reserved) */
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    etheraddr	lg_dst;			/* destination id */
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_sarea;		/* source area (reserved) */
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_ssarea;		/* source subarea (reserved) */
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    etheraddr	lg_src;			/* source id */
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_nextl2;		/* next level 2 router (reserved) */
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_visits;		/* visit count */
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_service;		/* service class (reserved) */
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	lg_pt;			/* protocol type (reserved) */
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectunion routehdr
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct shorthdr rh_short;		/* short route header */
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct longhdr rh_long;		/* long route header */
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Define the values of various fields in the protocol messages.
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Data packet formats.
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_MASK	7		/* mask for message type */
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_SHORT	2		/* short message format */
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_LONG	6		/* long message format */
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef RMF_RQR
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_RQR		010		/* request return to sender */
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_RTS		020		/* returning to sender */
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_IE		040		/* intra-ethernet packet */
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* RMR_RQR */
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_FVER	0100		/* future version flag */
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_PAD		0200		/* pad field */
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_PADMASK	0177		/* pad field mask */
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define VIS_MASK	077		/* visit field mask */
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Control packet formats.
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_CTLMASK	017		/* mask for message type */
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_CTLMSG	01		/* control message indicator */
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_INIT	01		/* initialization message */
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_VER		03		/* verification message */
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_TEST	05		/* hello and test message */
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_L1ROUT	07		/* level 1 routing message */
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_L2ROUT	011		/* level 2 routing message */
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_RHELLO	013		/* router hello message */
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RMF_EHELLO	015		/* endnode hello message */
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TI_L2ROUT	01		/* level 2 router */
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TI_L1ROUT	02		/* level 1 router */
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TI_ENDNODE	03		/* endnode */
1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TI_VERIF	04		/* verification required */
1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TI_BLOCK	010		/* blocking requested */
1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define VE_VERS		2		/* version number (2) */
1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define VE_ECO		0		/* ECO number */
1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define VE_UECO		0		/* user ECO number (0) */
1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define P3_VERS		1		/* phase III version number (1) */
1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define P3_ECO		3		/* ECO number (3) */
1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define P3_UECO		0		/* user ECO number (0) */
1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_L2ROUT	01		/* level 2 router */
1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_L1ROUT	02		/* level 1 router */
1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_ENDNODE	03		/* endnode */
1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_VERIF	04		/* verification required */
1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_NOMCAST	040		/* no multicast traffic accepted */
1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_BLOCK	0100		/* blocking requested */
1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define II_TYPEMASK	03		/* mask for node type */
1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TESTDATA	0252		/* test data bytes */
1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TESTLEN		1		/* length of transmitted test data */
1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Define control message formats.
1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct initmsgIII			/* phase III initialization message */
1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_flags;		/* route flags */
1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	inIII_src;		/* source node address */
1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_info;		/* routing layer information */
1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	inIII_blksize;		/* maximum data link block size */
1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_vers;		/* version number */
1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_eco;		/* ECO number */
1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_ueco;		/* user ECO number */
1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	inIII_rsvd;		/* reserved image field */
1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct initmsg				/* initialization message */
1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_flags;		/* route flags */
1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	in_src;			/* source node address */
1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_info;		/* routing layer information */
1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	in_blksize;		/* maximum data link block size */
1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_vers;		/* version number */
1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_eco;			/* ECO number */
1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_ueco;		/* user ECO number */
1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	in_hello;		/* hello timer */
1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	in_rsvd;		/* reserved image field */
1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct verifmsg				/* verification message */
1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ve_flags;		/* route flags */
1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ve_src;			/* source node address */
1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ve_fcnval;		/* function value image field */
1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct testmsg				/* hello and test message */
1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	te_flags;		/* route flags */
1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	te_src;			/* source node address */
1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	te_data;		/* test data image field */
1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct l1rout				/* level 1 routing message */
1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	r1_flags;		/* route flags */
1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	r1_src;			/* source node address */
1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	r1_rsvd;		/* reserved field */
1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct l2rout				/* level 2 routing message */
2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	r2_flags;		/* route flags */
2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	r2_src;			/* source node address */
2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	r2_rsvd;		/* reserved field */
2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rhellomsg			/* router hello message */
2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_flags;		/* route flags */
2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_vers;		/* version number */
2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_eco;			/* ECO number */
2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_ueco;		/* user ECO number */
2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    etheraddr	rh_src;			/* source id */
2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_info;		/* routing layer information */
2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	rh_blksize;		/* maximum data link block size */
2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_priority;		/* router's priority */
2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_area;		/* reserved */
2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	rh_hello;		/* hello timer */
2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	rh_mpd;			/* reserved */
2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct ehellomsg			/* endnode hello message */
2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_flags;		/* route flags */
2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_vers;		/* version number */
2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_eco;			/* ECO number */
2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_ueco;		/* user ECO number */
2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    etheraddr	eh_src;			/* source id */
2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_info;		/* routing layer information */
2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	eh_blksize;		/* maximum data link block size */
2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_area;		/* area (reserved) */
2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_seed[8];		/* verification seed */
2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    etheraddr	eh_router;		/* designated router */
2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	eh_hello;		/* hello timer */
2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_mpd;			/* (reserved) */
2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	eh_data;		/* test data image field */
2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectunion controlmsg
2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct initmsg	cm_init;	/* initialization message */
2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct verifmsg	cm_ver;		/* verification message */
2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct testmsg	cm_test;	/* hello and test message */
2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct l1rout	cm_l1rou;	/* level 1 routing message */
2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct l2rout	cm_l2rout;	/* level 2 routing message */
2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct rhellomsg	cm_rhello;	/* router hello message */
2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    struct ehellomsg	cm_ehello;	/* endnode hello message */
2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Macros for decoding routing-info fields */
2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	RI_COST(x)	((x)&0777)
2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	RI_HOPS(x)	(((x)>>10)&037)
2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * NSP protocol fields and values.
2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define NSP_TYPEMASK 014		/* mask to isolate type code */
2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define NSP_SUBMASK 0160		/* mask to isolate subtype code */
2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define NSP_SUBSHFT 4			/* shift to move subtype code */
2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFT_DATA 0			/* data message */
2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFT_ACK  04			/* acknowledgement message */
2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFT_CTL  010			/* control message */
2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_ILS  020			/* data or I/LS indicator */
2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_BOM  040			/* beginning of message (data) */
2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_MOM  0			/* middle of message (data) */
2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_EOM  0100			/* end of message (data) */
2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_INT  040			/* interrupt message */
2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_DACK 0			/* data acknowledgement */
2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_IACK 020			/* I/LS acknowledgement */
2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_CACK 040			/* connect acknowledgement */
2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_NOP  0			/* no operation */
2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_CI   020			/* connect initiate */
2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_CC   040			/* connect confirm */
2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_DI   060			/* disconnect initiate */
2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_DC   0100			/* disconnect confirm */
2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MFS_RCI  0140			/* retransmitted connect initiate */
2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_ACK  0100000		/* ack */
2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_NAK  0110000		/* negative ack */
2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_OACK 0120000		/* other channel ack */
2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_ONAK 0130000		/* other channel negative ack */
2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_MASK 07777			/* mask to isolate seq # */
2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_OTHER 020000		/* other channel qualifier */
2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_DELAY 010000		/* ack delay flag */
2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SGQ_EOM  0100000		/* pseudo flag for end-of-message */
2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSM_MASK 03			/* mask for modifier field */
2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSM_NOCHANGE 0			/* no change */
2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSM_DONOTSEND 1			/* do not send data */
2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSM_SEND 2			/* send data */
2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSI_MASK 014			/* mask for interpretation field */
2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSI_DATA 0			/* data segment or message count */
2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSI_INTR 4			/* interrupt request count */
3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSI_INTM 0377			/* funny marker for int. message */
3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_MASK 014			/* mask for flow control field */
3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_NONE 0			/* no flow control */
3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_SEGMENT 04			/* segment flow control */
3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_MESSAGE 010			/* message flow control */
3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_CRYPTSER 020		/* cryptographic services requested */
3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COS_DEFAULT 1			/* default value for field */
3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COI_MASK 3			/* mask for version field */
3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COI_32 0			/* version 3.2 */
3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COI_31 1			/* version 3.1 */
3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COI_40 2			/* version 4.0 */
3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define COI_41 3			/* version 4.1 */
3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_MASK 140			/* mask for session control version */
3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_10 000				/* session V1.0 */
3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_20 040				/* session V2.0 */
3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_ACCESS 1			/* access control present */
3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_USRDATA 2			/* user data field present */
3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_INVKPROXY 4			/* invoke proxy field present */
3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MNU_UICPROXY 8			/* use uic-based proxy */
3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DC_NORESOURCES 1		/* no resource reason code */
3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DC_NOLINK 41			/* no link terminate reason code */
3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DC_COMPLETE 42			/* disconnect complete reason code */
3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_NOERROR 0			/* user disconnect */
3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_SHUT 3			/* node is shutting down */
3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_NOUSER 4			/* destination end user does not exist */
3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_INVDEST 5			/* invalid end user destination */
3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_REMRESRC 6			/* insufficient remote resources */
3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_TPA 8			/* third party abort */
3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_PROTOCOL 7			/* protocol error discovered */
3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_ABORT 9			/* user abort */
3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_LOCALRESRC 32		/* insufficient local resources */
3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_REMUSERRESRC 33		/* insufficient remote user resources */
3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_BADACCESS 34			/* bad access control information */
3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_BADACCNT 36			/* bad ACCOUNT information */
3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_CONNECTABORT 38		/* connect request cancelled */
3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_TIMEDOUT 38			/* remote node or user crashed */
3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_UNREACHABLE 39		/* local timers expired due to ... */
3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_BADIMAGE 43			/* bad image data in connect */
3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define DI_SERVMISMATCH 54		/* cryptographic service mismatch */
3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_OBJREJECT 0			/* object rejected connect */
3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_USERDISCONNECT 0		/* user disconnect */
3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_RESOURCES 1			/* insufficient resources (local or remote) */
3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_NOSUCHNODE 2			/* unrecognized node name */
3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_REMOTESHUT 3			/* remote node shutting down */
3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_NOSUCHOBJ 4			/* unrecognized object */
3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_INVOBJFORMAT 5		/* invalid object name format */
3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_OBJTOOBUSY 6			/* object too busy */
3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_NETWORKABORT 8		/* network abort */
3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_USERABORT 9			/* user abort */
3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_INVNODEFORMAT 10		/* invalid node name format */
3562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_LOCALSHUT 11			/* local node shutting down */
3572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_ACCESSREJECT 34		/* invalid access control information */
3582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_NORESPONSE 38		/* no response from object */
3592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define UC_UNREACHABLE 39		/* node unreachable */
3602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * NSP message formats.
3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct nsphdr				/* general nsp header */
3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	nh_flags;		/* message flags */
3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	nh_dst;			/* destination link address */
3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	nh_src;			/* source link address */
3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct seghdr				/* data segment header */
3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	sh_flags;		/* message flags */
3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	sh_dst;			/* destination link address */
3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	sh_src;			/* source link address */
3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	sh_seq[3];		/* sequence numbers */
3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct minseghdr			/* minimum data segment header */
3802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
3812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ms_flags;		/* message flags */
3822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ms_dst;			/* destination link address */
3832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ms_src;			/* source link address */
3842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ms_seq;			/* sequence number */
3852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
3862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lsmsg				/* link service message (after hdr) */
3882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
3892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ls_lsflags;		/* link service flags */
3902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ls_fcval;		/* flow control value */
3912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
3922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct ackmsg				/* acknowledgement message */
3942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
3952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ak_flags;		/* message flags */
3962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ak_dst;			/* destination link address */
3972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ak_src;			/* source link address */
3982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ak_acknum[2];		/* acknowledgement numbers */
3992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct minackmsg			/* minimum acknowledgement message */
4022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	mk_flags;		/* message flags */
4042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	mk_dst;			/* destination link address */
4052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	mk_src;			/* source link address */
4062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	mk_acknum;		/* acknowledgement number */
4072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct ciackmsg				/* connect acknowledgement message */
4102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ck_flags;		/* message flags */
4122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ck_dst;			/* destination link address */
4132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct cimsg				/* connect initiate message */
4162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ci_flags;		/* message flags */
4182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ci_dst;			/* destination link address (0) */
4192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ci_src;			/* source link address */
4202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ci_services;		/* requested services */
4212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	ci_info;		/* information */
4222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	ci_segsize;		/* maximum segment size */
4232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct ccmsg				/* connect confirm message */
4262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cc_flags;		/* message flags */
4282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cc_dst;			/* destination link address */
4292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cc_src;			/* source link address */
4302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cc_services;		/* requested services */
4312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cc_info;		/* information */
4322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cc_segsize;		/* maximum segment size */
4332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cc_optlen;		/* optional data length */
4342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct cnmsg				/* generic connect message */
4372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cn_flags;		/* message flags */
4392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cn_dst;			/* destination link address */
4402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cn_src;			/* source link address */
4412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cn_services;		/* requested services */
4422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	cn_info;		/* information */
4432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	cn_segsize;		/* maximum segment size */
4442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct dimsg				/* disconnect initiate message */
4472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	di_flags;		/* message flags */
4492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	di_dst;			/* destination link address */
4502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	di_src;			/* source link address */
4512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	di_reason;		/* reason code */
4522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	di_optlen;		/* optional data length */
4532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
4542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct dcmsg				/* disconnect confirm message */
4562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  {
4572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    byte	dc_flags;		/* message flags */
4582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	dc_dst;			/* destination link address */
4592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	dc_src;			/* source link address */
4602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    word	dc_reason;		/* reason code */
4612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  };
462