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