📄 decnet.h
字号:
/* * Copyright (c) 1992, 1994, 1996 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#) $Header: decnet.h,v 1.6 96/07/15 18:15:19 leres Exp $ (LBL) *//* * Definitions for DECNET Phase IV protocol headers */union etheraddress { unsigned char dne_addr[6]; /* full ethernet address */ struct { unsigned char dne_hiord[4]; /* DECnet HIORD prefix */ unsigned char dne_nodeaddr[2]; /* DECnet node address */ } dne_remote;};typedef union etheraddress etheraddr; /* Ethernet address */#define HIORD 0x000400aa /* high 32-bits of address (swapped) */#define AREAMASK 0176000 /* mask for area field */#define AREASHIFT 10 /* bit-offset for area field */#define NODEMASK 01777 /* mask for node address field */#define DN_MAXADDL 20 /* max size of DECnet address */struct dn_naddr { unsigned short a_len; /* length of address */ unsigned char a_addr[DN_MAXADDL]; /* address as bytes */};/* * Define long and short header formats. */struct shorthdr { unsigned char sh_flags[1]; /* route flags */ unsigned char sh_dst[2]; /* destination node address */ unsigned char sh_src[2]; /* source node address */ unsigned char sh_visits[1]; /* visit count */ };struct longhdr { unsigned char lg_flags[1]; /* route flags */ unsigned char lg_darea[1]; /* destination area (reserved) */ unsigned char lg_dsarea[1]; /* destination subarea (reserved) */ etheraddr lg_dst; /* destination id */ unsigned char lg_sarea[1]; /* source area (reserved) */ unsigned char lg_ssarea[1]; /* source subarea (reserved) */ etheraddr lg_src; /* source id */ unsigned char lg_nextl2[1]; /* next level 2 router (reserved) */ unsigned char lg_visits[1]; /* visit count */ unsigned char lg_service[1]; /* service class (reserved) */ unsigned char lg_pt[1]; /* protocol type (reserved) */ };union routehdr { struct shorthdr rh_short; /* short route header */ struct longhdr rh_long; /* long route header */ };/* * Define the values of various fields in the protocol messages. * * 1. Data packet formats. */#define RMF_MASK 7 /* mask for message type */#define RMF_SHORT 2 /* short message format */#define RMF_LONG 6 /* long message format */#ifndef RMF_RQR#define RMF_RQR 010 /* request return to sender */#define RMF_RTS 020 /* returning to sender */#define RMF_IE 040 /* intra-ethernet packet */#endif /* RMR_RQR */#define RMF_FVER 0100 /* future version flag */#define RMF_PAD 0200 /* pad field */#define RMF_PADMASK 0177 /* pad field mask */#define VIS_MASK 077 /* visit field mask *//* * 2. Control packet formats. */#define RMF_CTLMASK 017 /* mask for message type */#define RMF_CTLMSG 01 /* control message indicator */#define RMF_INIT 01 /* initialization message */#define RMF_VER 03 /* verification message */#define RMF_TEST 05 /* hello and test message */#define RMF_L1ROUT 07 /* level 1 routing message */#define RMF_L2ROUT 011 /* level 2 routing message */#define RMF_RHELLO 013 /* router hello message */#define RMF_EHELLO 015 /* endnode hello message */#define TI_L2ROUT 01 /* level 2 router */#define TI_L1ROUT 02 /* level 1 router */#define TI_ENDNODE 03 /* endnode */#define TI_VERIF 04 /* verification required */#define TI_BLOCK 010 /* blocking requested */#define VE_VERS 2 /* version number (2) */#define VE_ECO 0 /* ECO number */#define VE_UECO 0 /* user ECO number (0) */#define P3_VERS 1 /* phase III version number (1) */#define P3_ECO 3 /* ECO number (3) */#define P3_UECO 0 /* user ECO number (0) */#define II_L2ROUT 01 /* level 2 router */#define II_L1ROUT 02 /* level 1 router */#define II_ENDNODE 03 /* endnode */#define II_VERIF 04 /* verification required */#define II_NOMCAST 040 /* no multicast traffic accepted */#define II_BLOCK 0100 /* blocking requested */#define II_TYPEMASK 03 /* mask for node type */#define TESTDATA 0252 /* test data bytes */#define TESTLEN 1 /* length of transmitted test data *//* * Define control message formats. */struct initmsgIII /* phase III initialization message */ { unsigned char inIII_flags[1]; /* route flags */ unsigned char inIII_src[2]; /* source node address */ unsigned char inIII_info[1]; /* routing layer information */ unsigned char inIII_blksize[2]; /* maximum data link block size */ unsigned char inIII_vers[1]; /* version number */ unsigned char inIII_eco[1]; /* ECO number */ unsigned char inIII_ueco[1]; /* user ECO number */ unsigned char inIII_rsvd[1]; /* reserved image field */ };struct initmsg /* initialization message */ { unsigned char in_flags[1]; /* route flags */ unsigned char in_src[2]; /* source node address */ unsigned char in_info[1]; /* routing layer information */ unsigned char in_blksize[2]; /* maximum data link block size */ unsigned char in_vers[1]; /* version number */ unsigned char in_eco[1]; /* ECO number */ unsigned char in_ueco[1]; /* user ECO number */ unsigned char in_hello[2]; /* hello timer */ unsigned char in_rsvd[1]; /* reserved image field */ };struct verifmsg /* verification message */ { unsigned char ve_flags[1]; /* route flags */ unsigned char ve_src[2]; /* source node address */ unsigned char ve_fcnval[1]; /* function value image field */ };struct testmsg /* hello and test message */ { unsigned char te_flags[1]; /* route flags */ unsigned char te_src[2]; /* source node address */ unsigned char te_data[1]; /* test data image field */ };struct l1rout /* level 1 routing message */ { unsigned char r1_flags[1]; /* route flags */ unsigned char r1_src[2]; /* source node address */ unsigned char r1_rsvd[1]; /* reserved field */ };struct l2rout /* level 2 routing message */ { unsigned char r2_flags[1]; /* route flags */ unsigned char r2_src[2]; /* source node address */ unsigned char r2_rsvd[1]; /* reserved field */ };struct rhellomsg /* router hello message */ { unsigned char rh_flags[1]; /* route flags */ unsigned char rh_vers[1]; /* version number */ unsigned char rh_eco[1]; /* ECO number */ unsigned char rh_ueco[1]; /* user ECO number */ etheraddr rh_src; /* source id */ unsigned char rh_info[1]; /* routing layer information */ unsigned char rh_blksize[2]; /* maximum data link block size */ unsigned char rh_priority[1]; /* router's priority */ unsigned char rh_area[1]; /* reserved */ unsigned char rh_hello[2]; /* hello timer */ unsigned char rh_mpd[1]; /* reserved */ };struct ehellomsg /* endnode hello message */ { unsigned char eh_flags[1]; /* route flags */ unsigned char eh_vers[1]; /* version number */ unsigned char eh_eco[1]; /* ECO number */ unsigned char eh_ueco[1]; /* user ECO number */ etheraddr eh_src; /* source id */ unsigned char eh_info[1]; /* routing layer information */ unsigned char eh_blksize[2]; /* maximum data link block size */ unsigned char eh_area[1]; /* area (reserved) */ unsigned char eh_seed[8][1]; /* verification seed */ etheraddr eh_router; /* designated router */ unsigned char eh_hello[2]; /* hello timer */ unsigned char eh_mpd[1]; /* (reserved) */ unsigned char eh_data[1]; /* test data image field */ };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -