Annotation of 42BSD/sys/netimp/if_imp.h, revision 1.1

1.1     ! root        1: /*     if_imp.h        6.1     83/07/29        */
        !             2: 
        !             3: /*
        !             4:  * Structure of IMP 1822 long leader.
        !             5:  */
        !             6: struct control_leader {
        !             7:        u_char  dl_format;      /* leader format */
        !             8:        u_char  dl_network;     /* src/dest network */
        !             9:        u_char  dl_flags;       /* leader flags */
        !            10:        u_char  dl_mtype;       /* message type */
        !            11:        u_char  dl_htype;       /* handling type */
        !            12:        u_char  dl_host;        /* host number */
        !            13:        u_short dl_imp;         /* imp field */
        !            14:        u_char  dl_link;        /* link number */
        !            15:        u_char  dl_subtype;     /* message subtype */
        !            16: };
        !            17: 
        !            18: struct imp_leader {
        !            19:        struct  control_leader il_dl;
        !            20: #define        il_format       il_dl.dl_format
        !            21: #define        il_network      il_dl.dl_network
        !            22: #define        il_flags        il_dl.dl_flags
        !            23: #define        il_mtype        il_dl.dl_mtype
        !            24: #define        il_htype        il_dl.dl_htype
        !            25: #define        il_host         il_dl.dl_host
        !            26: #define        il_imp          il_dl.dl_imp
        !            27: #define        il_link         il_dl.dl_link
        !            28: #define        il_subtype      il_dl.dl_subtype
        !            29:        u_short il_length;      /* message length */
        !            30: };
        !            31: 
        !            32: #define        IMP_DROPCNT     2       /* # of noops from imp to ignore */
        !            33: /* insure things are even... */
        !            34: #define        IMPMTU          ((8159 / NBBY) & ~01)
        !            35: 
        !            36: /*
        !            37:  * IMP-host flags
        !            38:  */
        !            39: #define        IMP_NFF         0xf     /* 96-bit (new) format */
        !            40: #define        IMP_TRACE       0x8     /* trace message route */
        !            41: 
        !            42: #define        IMP_DMASK       0x3     /* host going down mask */
        !            43: 
        !            44: /*
        !            45:  * IMP-host message types.
        !            46:  */
        !            47: #define        IMPTYPE_DATA            0       /* data for protocol */
        !            48: #define        IMPTYPE_BADLEADER       1       /* leader error */
        !            49: #define        IMPTYPE_DOWN            2       /* imp going down */
        !            50: #define        IMPTYPE_NOOP            4       /* noop seen during initialization */
        !            51: #define        IMPTYPE_RFNM            5       /* request for new messages */
        !            52: #define        IMPTYPE_HOSTDEAD        6       /* host doesn't respond */
        !            53: #define        IMPTYPE_HOSTUNREACH     7       /* host unreachable */
        !            54: #define        IMPTYPE_BADDATA         8       /* data error */
        !            55: #define        IMPTYPE_INCOMPLETE      9       /* incomplete message, send rest */
        !            56: #define        IMPTYPE_RESET           10      /* reset complete */
        !            57: /* non-blocking IMP interface */
        !            58: #define        IMPTYPE_RETRY           11      /* IMP refused, try again */
        !            59: #define        IMPTYPE_NOTIFY          12      /* IMP refused, will notify */
        !            60: #define        IMPTYPE_TRYING          13      /* IMP refused, still rexmt'ng */
        !            61: #define        IMPTYPE_READY           14      /* ready for next message */
        !            62: 
        !            63: /*
        !            64:  * IMPTYPE_DOWN subtypes.
        !            65:  */
        !            66: #define        IMPDOWN_GOING           0       /* 30 secs */
        !            67: #define        IMPDOWN_PM              1       /* hardware PM */
        !            68: #define        IMPDOWN_RELOAD          2       /* software reload */
        !            69: #define        IMPDOWN_RESTART         3       /* emergency restart */
        !            70: 
        !            71: /*
        !            72:  * IMPTYPE_BADLEADER subtypes.
        !            73:  */
        !            74: #define        IMPLEADER_ERR           0       /* error flip-flop set */
        !            75: #define        IMPLEADER_SHORT         1       /* leader < 80 bits */
        !            76: #define        IMPLEADER_TYPE          2       /* illegal type field */
        !            77: #define        IMPLEADER_OPPOSITE      3       /* opposite leader type */
        !            78: 
        !            79: /*
        !            80:  * IMPTYPE_HOSTDEAD subtypes.
        !            81:  */
        !            82: #define        IMPHOST_NORDY           1       /* ready-line negated */
        !            83: #define        IMPHOST_TARDY           2       /* tardy receiving mesgs */
        !            84: #define        IMPHOST_NOEXIST         3       /* NCC doesn't know host */
        !            85: #define        IMPHOST_IMPSOFT         4       /* IMP software won't allow mesgs */
        !            86: #define        IMPHOST_PM              5       /* host down for scheduled PM */
        !            87: #define        IMPHOST_HARDSCHED       6       /* " " " " hardware work */
        !            88: #define        IMPHOST_SOFTSCHED       7       /* " " " " software work */
        !            89: #define        IMPHOST_RESTART         8       /* host down for emergency restart */
        !            90: #define        IMPHOST_POWER           9       /* down because of power outage */
        !            91: #define        IMPHOST_BREAKPOINT      10      /* host stopped at a breakpoint */
        !            92: #define        IMPHOST_HARDWARE        11      /* hardware failure */
        !            93: #define        IMPHOST_NOTUP           12      /* host not scheduled to be up */
        !            94: /* 13-14 currently unused */
        !            95: #define        IMPHOST_COMINGUP        15      /* host in process of coming up */
        !            96: 
        !            97: /*
        !            98:  * IMPTYPE_HOSTUNREACH subtypes.
        !            99:  */
        !           100: #define        IMPREACH_IMP            0       /* destination IMP can't be reached */
        !           101: #define        IMPREACH_HOSTUP         1       /* destination host isn't up */
        !           102: #define        IMPREACH_LEADER         2       /* host doesn't support long leader */
        !           103: #define        IMPREACH_PROHIBITED     3       /* communication is prohibited */
        !           104: 
        !           105: /*
        !           106:  * IMPTYPE_INCOMPLETE subtypes.
        !           107:  */
        !           108: #define        IMPCOMPLETE_SLOW        0       /* host didn't take data fast enough */
        !           109: #define        IMPCOMPLETE_TOOLONG     1       /* message was too long */
        !           110: #define        IMPCOMPLETE_TIMEOUT     2       /* mesg transmission time > 15 sec. */
        !           111: #define        IMPCOMPLETE_FAILURE     3       /* IMP/circuit failure */
        !           112: #define        IMPCOMPLETE_NOSPACE     4       /* no resources within 15 sec. */
        !           113: #define        IMPCOMPLETE_IMPIO       5       /* src IMP I/O failure during receipt */
        !           114: 
        !           115: /*
        !           116:  * IMPTYPE_RETRY subtypes.
        !           117:  */
        !           118: #define        IMPRETRY_BUFFER         0       /* IMP buffer wasn't available */
        !           119: #define        IMPRETRY_BLOCK          1       /* connection block unavailable */
        !           120: 
        !           121: /*
        !           122:  * Data structure shared between IMP protocol module and hardware
        !           123:  * interface driver.  Used to allow layering of IMP routines on top
        !           124:  * of varying device drivers.  NOTE: there's a possible problem 
        !           125:  * with ambiguity in the ``unit'' definition which is implicitly
        !           126:  * shared by the both IMP and device code.  If we have two IMPs,
        !           127:  * with each on top of a device of the same unit, things won't work.
        !           128:  * The assumption is if you've got multiple IMPs, then they all run
        !           129:  * on top of the same type of device, or they must have different units.
        !           130:  */
        !           131: struct impcb {
        !           132:        char    ic_oactive;             /* output in progress */
        !           133:        int     (*ic_init)();           /* hardware init routine */
        !           134:        int     (*ic_start)();          /* hardware start output routine */
        !           135: };
        !           136: 
        !           137: /*
        !           138:  * State of an IMP.
        !           139:  */
        !           140: #define        IMPS_DOWN       0               /* unavailable, don't use */
        !           141: #define        IMPS_GOINGDOWN  1               /* been told we go down soon */
        !           142: #define        IMPS_INIT       2               /* coming up */
        !           143: #define        IMPS_UP         3               /* ready to go */
        !           144: #define        IMPS_RESET      4               /* reset in progress */
        !           145: 
        !           146: #define        IMPTV_DOWN      (30*60)         /* going down timer 30 secs */
        !           147: 
        !           148: #ifdef IMPLEADERS
        !           149: char *impleaders[IMPTYPE_READY+1] = {
        !           150:        "DATA", "BADLEADER", "DOWN", "bad", "NOOP", "RFNM", "HOSTDEAD",
        !           151:        "HOSTUNREACH", "BADDATA", "INCOMPLETE", "RESET", "RETRY",
        !           152:        "NOTIFY", "TRYING", "READY"
        !           153: };
        !           154: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.