?? decnet.h
字號(hào):
/* * 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: /tcpdump/master/tcpdump/decnet.h,v 1.11 2002-12-11 07:13:50 guy Exp $ (LBL) */#ifndef WIN32typedef u_int8_t byte[1]; /* single byte field */#else/* * the keyword 'byte' generates conflicts in Windows */typedef unsigned char Byte[1]; /* single byte field */#define byte Byte#endif /* WIN32 */typedef u_int8_t word[2]; /* 2 byte field */typedef u_int8_t longword[4]; /* 4 bytes field *//* * Definitions for DECNET Phase IV protocol headers */union etheraddress { u_int8_t dne_addr[6]; /* full ethernet address */ struct { u_int8_t dne_hiord[4]; /* DECnet HIORD prefix */ u_int8_t 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 { u_int16_t a_len; /* length of address */ u_int8_t a_addr[DN_MAXADDL]; /* address as bytes */};/* * Define long and short header formats. */struct shorthdr { byte sh_flags; /* route flags */ word sh_dst; /* destination node address */ word sh_src; /* source node address */ byte sh_visits; /* visit count */ };struct longhdr { byte lg_flags; /* route flags */ byte lg_darea; /* destination area (reserved) */ byte lg_dsarea; /* destination subarea (reserved) */ etheraddr lg_dst; /* destination id */ byte lg_sarea; /* source area (reserved) */ byte lg_ssarea; /* source subarea (reserved) */ etheraddr lg_src; /* source id */ byte lg_nextl2; /* next level 2 router (reserved) */ byte lg_visits; /* visit count */ byte lg_service; /* service class (reserved) */ byte lg_pt; /* 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 */ { byte inIII_flags; /* route flags */ word inIII_src; /* source node address */ byte inIII_info; /* routing layer information */ word inIII_blksize; /* maximum data link block size */ byte inIII_vers; /* version number */ byte inIII_eco; /* ECO number */ byte inIII_ueco; /* user ECO number */ byte inIII_rsvd; /* reserved image field */ };struct initmsg /* initialization message */ { byte in_flags; /* route flags */ word in_src; /* source node address */ byte in_info; /* routing layer information */ word in_blksize; /* maximum data link block size */ byte in_vers; /* version number */ byte in_eco; /* ECO number */ byte in_ueco; /* user ECO number */ word in_hello; /* hello timer */ byte in_rsvd; /* reserved image field */ };struct verifmsg /* verification message */ { byte ve_flags; /* route flags */ word ve_src; /* source node address */ byte ve_fcnval; /* function value image field */ };struct testmsg /* hello and test message */ { byte te_flags; /* route flags */ word te_src; /* source node address */ byte te_data; /* test data image field */ };struct l1rout /* level 1 routing message */ { byte r1_flags; /* route flags */ word r1_src; /* source node address */ byte r1_rsvd; /* reserved field */ };struct l2rout /* level 2 routing message */ { byte r2_flags; /* route flags */ word r2_src; /* source node address */ byte r2_rsvd; /* reserved field */ };struct rhellomsg /* router hello message */ { byte rh_flags; /* route flags */ byte rh_vers; /* version number */ byte rh_eco; /* ECO number */ byte rh_ueco; /* user ECO number */ etheraddr rh_src; /* source id */ byte rh_info; /* routing layer information */ word rh_blksize; /* maximum data link block size */ byte rh_priority; /* router's priority */ byte rh_area; /* reserved */ word rh_hello; /* hello timer */ byte rh_mpd; /* reserved */ };struct ehellomsg /* endnode hello message */ { byte eh_flags; /* route flags */ byte eh_vers; /* version number */ byte eh_eco; /* ECO number */ byte eh_ueco; /* user ECO number */ etheraddr eh_src; /* source id */ byte eh_info; /* routing layer information */ word eh_blksize; /* maximum data link block size */ byte eh_area; /* area (reserved) */ byte eh_seed[8]; /* verification seed */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -