⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decnet.h

📁 This directory contains source code for tcpdump, a tool for network monitoring and data acquisition
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
 * 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.6.1.1 1999/10/07 23:47:10 mcr Exp $ (LBL)
 */

typedef unsigned char byte[1];  /* single byte field */
typedef unsigned char word[2];  /* 2 byte field */
typedef unsigned char longword[4];  /* 4 bytes field */

/*
 * Definitions for DECNET Phase IV protocol headers
 */
union etheraddress {
      u_char dne_addr[6];         /* full ethernet address */
      struct {
        u_char dne_hiord[4];      /* DECnet HIORD prefix */
        u_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 {
       u_short a_len;             /* length of address */
       u_char  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
#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 */
  etheraddr eh_router;           /* designated router */
  word eh_hello;                 /* hello timer */
  byte eh_mpd;                   /* (reserved) */
  byte eh_data;                  /* test data image field */
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -