DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦222ad5ff4⟧ TextFileVerbose

    Length: 11520 (0x2d00)
    Types: TextFileVerbose
    Names: »routenv«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »routenv« 

TextFileVerbose

routenv;


(******************************************************************)
(*                                                                *)
(*   router environments                                          *)
(*                                                                *)
(******************************************************************)


(* basic const declarations *)


const

(* network parameters *)

nmax=10;        (* max no of nodes *)
nnpmax=5;       (* no of nnp types *)
nnp_hshake= 1;  (* handshake function value *)
nnp_nwtime= 2;  (* network time function value *)
nnp_nodrng= 3;  (* node range vector function value *)
nnp_regrng= 4;  (* region range vector function value *)
nnp_netrng= 5;  (* network range vector function value *)
lgt_hshake= 10;   (* wordlength of handshake data *)
nnp_prio= 255;  (* priority of nnp packets *)
rlmax=1;        (* no of routing levels *)

type

nwadr = array(1..rlmax) of integer;  (* network addresses *)

const

rlinf = nwadr(30);
rlnmax = nwadr(10);

(* node parameters *)

cmax=6;        (* max no of connectors *)
cparam_max= 10;    (* max no of params in conn_desc *)

(* nnp packet parameters *)

pnnph_lgt=4;      (* nnp packet head length *)
pnnpmax=(pmax+phead1_lgt-pnnph_lgt) div 2;  (* max data length of nnp packet *)

(* local connector parameters *)

extmax=10;      (* max no of extensions *)
psmax=10;       (* size of packet storage *)
pstim=10;       (* step time in packet storage *)

(* hdlc connector parameters *)

rbuf=2;        (* multibuffering on input *)
tbuf=10;        (*  multibuffering on output *)



(* communication with the pool handler *)

nnp_rq_prio=infinite_wait+3; (* u3 *)
hdlc_in_prio=infinite_wait+0;  (* u3 *)


(* communication with the ncp *)

r_lcp_lgt= 20;    (* no of integers in data part of lcp oper *)

(* communication with the supervisor *)

req_nnp_ev= 1*128+16+0;

(* communication with the hlrec *)

open_rec=1*128+4;       (* open hlrec *)
close_rec=1*128+8;      (* close hlrec *)

(* streams  -  u4    *)


(* basic type declarations *)

type

nnparray = array (1 .. nnpmax) of integer;

cboolarray= array (1 .. cmax) of boolean;
ltsmarray = array (1..cmax) of tap_pointer;
csemarray = array (1..cmax) of semaphore;

c_state_type= (running, congested, temp_down, down, stopped, not_crea);

cstarray=array(1..cmax) of c_state_type;

cmaxarint=array(1..cmax) of integer;


qinftable= record      (* queue info *)
key: semaphore;
qlgt: cmaxarint;
state: cstarray;
end;


conn_typ= (none, typ_locon, typ_hlcon, typ_lamcon);

cparams_type= array (1 .. cparam_max) of integer;

conn_desc_type= record
ctyp: conn_typ;
cparams: cparams_type;
end;

conn_desc_array= array (1 .. cmax) of conn_desc_type;


nwtime= record        (* network time *)
key: semaphore;
t: int32;
end;

handshake= array (1 .. lgt_hshake) of integer;


routtable=record
key: semaphore;
act_nmax: integer;
infway: integer;
tab: array(1..nmax,1..cmax) of integer;
lastconn: array(1..nmax) of integer;
end;

rtabarray= array(1..rlmax) of routtable;

pipar=array(1..nnpmax) of bit;
cnnparbit=array(1..cmax) of pipar;

nnpfltable=record
key: semaphore;
flag: cnnparbit;
cnt: cmaxarint;
nblevel: cmaxarint;
end;




phnnp=packed record
format,priority,
typ,func: byte;
end;

packnnp=packed record
drvbuf: drvbuftype;
rparam: rparamtype;
head: phnnp;
data: array(1..pnnpmax) of integer;
end;


pack_error=(form_ok,form_error,extunknown);

pfacttype=(route_p,reject_p,route_to_dest,route_to_sup);


pselement=record         (* packet storage element *)
free: boolean;
ext_no: integer;
ref: reference;
end;

psarray= array(0..psmax-1) of pselement;

p_s_type=record          (* packet storage *)
oldest: integer;
tab: psarray;
end;

extdescript=record             (* extension description *)
free: boolean;
ext_no: integer;
ubd_type: integer;     (* type of user buffer - 0,rec_packet,sense_ready *)
ubd_sem: semaphore;    (* user buffer deposit semaphore *)
wait_p_ps: integer;    (* no of waiting packets at the ps *)
st: ext_stat_type;      (* statistics  *)
end;


extdarray=array(1..extmax) of extdescript;

extrouttable=record            (* extension level  routing table (ELRT) *)
key: semaphore;
first_free: integer;
tab: extdarray;
end;

indext=record
skey: integer;
index: integer;    (* index in ELRT *)
end;

indextab=array(1..extmax) of indext;  (* index ELRT table *)

cntr_cr_con=packed record
first,last,next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
inc,ctype: byte;
cparams: cparams_type;
end;

extension_st_type=packed record 
first,last,next: integer;
sp_head:sp_head_type;
rout_mod, incarnation: byte;
dropped: integer;
n_of_ext: integer;
st: array(1..extmax) of statexttype;
end;

get_tim_op_type=packed record
first,last,next: integer;
sp_head: sp_head_type;
rout_mod,incarnation: byte;
supv: supv_tim_type;
local: array(1..cmax) of loc_tim_typ;
end;


senseconn_pack = packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
cnumber: integer;
cdesc: array (1 .. cmax) of connsense_type;
end;

rtab_pack = packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
h: rtabhead_type;
t: array (1..(cmax*nmax)) of integer;
end;


r_lcp_ident = packed record
first,last,next: integer;
lcp: lcp_ident_type;
end;


r_lcp_head= packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
end;

r_lcp_oper= packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
data: array (1..r_lcp_lgt) of integer;
end;

r_hlopen_type = packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
oprm: hlopen_type;
end;

r_hlconstat_type = packed record
first, last, next: integer;
sp_head: sp_head_type;
rout_mod, incarnation: byte;
stat: stat_hlcon;
end;


r_ev_data_type= array (1 .. (r_lcp_lgt - 1)) of integer;

r_lcp_event= packed record
first, last, next: integer;
sp_head: sp_head_type;
evtrec: eventrecordtype;
data: r_ev_data_type;
end;

int_event_type=packed record
evtrec: eventrecordtype;
data: r_ev_data_type;
end;



(* const declarations of specific types *)

const

(* nnp converting *)

nnpi = nnparray (1,3,2,0,0);      (* converts nnp func to index *)
nnpf = nnparray (1,3,2,0,0);      (* converts nnp index to func *)
nnprl = nnparray (0,1,0,0,0);     (* converts index to routing level *)


(******************************************************************)
(*        common router procedure declarations                    *)
(******************************************************************)


(*    lcp procedures          *)
(*    --------------          *)

procedure answ_lcp (var ref: reference;
status: set of sp_status_bit; bcnt: integer);
external;

procedure copy_event(var ref:reference);
external;



(*    data packet operations        *)
(*    ----------------------        *)

procedure find_dest (ownaddr, dest_addr: nwadr;
var dest_level: integer);
external;

procedure get_addr (var p: pack1; var addr: nwadr);
external;

procedure swaph1 (var packet: pack1);
external;

procedure update_queue (var queues: qinftable;
conn_no, update: integer);
external;


(*    nnp handling        *)
(*    ------------        *)

procedure update_range (update: integer; var rng: packnnp);
external;

function check_hshake (var p: packnnp; var hshake: handshake): boolean;
external;

procedure chup_nwtime (actual: int32; var time: nwtime);
external;

procedure rout_table_update (var t: routtable; var p: packnnp;
conn_no: integer; var upd: cboolarray);
external;

procedure insert_local_node (var t: routtable;
conn_no, node_no: integer);
external;

procedure conn_down (var rtabs: rtabarray; conn_no: integer);
external;

procedure new_conn_state (var queues: qinftable;
conn_no: integer; state: c_state_type);
external;

procedure ret_nnp_req (var waiting: semaphore);
external;

function get_nnpfl (var flagtable: nnpfltable;
conn_no: integer; var inx: integer): boolean;
external;

function set_nnp_fl (conn_no, index: integer;
var tab: nnpfltable): boolean;
external;

procedure build_hshake (var h: handshake; var packet: packnnp);
external;

procedure build_nwtime (var nwt: nwtime; var packet: packnnp);
external;

procedure build_rngvec (var t: routtable; var apcket: packnnp;
conn: integer);
external;


(*    routing etc.        *)
(*    ------------        *)

function reject (var packet: pack1; rej_state: integer): boolean;
external;

function route (var t: routtable; var q: qinftable;
var dest: integer; dyn: boolean): boolean;
external;

function masterroute (var packet: pack1; var dest: integer;
var ownadr, destadr: nwadr; var rtables: rtabarray;
var queues: qinftable): boolean;
external;

function check_node (var t: routtable; node: integer;
var dest: integer): boolean;
external;

function check_neighb (var t: routtable; node: integer;
var dest: integer): boolean;
external;

function lifetime_exc (var p: pack1; var netwtime: nwtime): boolean;
external;

function upd_nxt_rec (var p: pack1; toprec: integer;
var nextrec: integer): boolean;
external;

procedure place_trace (var p: pack1; toprec: integer;
var nextrec: integer; var netwtime: nwtime; var ownadr: nwadr);
external;

function check_path (var p: pack1; var rt: rtabarray;
toprec: integer; var nextrec: integer; var dest: integer;
var daddr: nwadr; var ownaddr: nwadr): pfacttype;
external;

function check_facility (var p: pack1; var rt: rtabarray;
toprec: integer; var nextrec: integer; var dest: integer;
var daddr: nwadr; var ownaddr: nwadr; var prejst: byte;
var netwtime: nwtime; mode: integer): pfacttype;
external;


(*    table operations,  local connector        *)
(*    ----------------------------------        *)

function search_table (ext_no: integer; var index: integer;
top: integer;bottom:integer; var index_elrt: indextab): boolean;
external;

function insert_table (ext_no: integer; var index: integer;
top:integer; var bottom:integer; var index_elrt: indextab): boolean;
external;

function remove_table (ext_no: integer;
var index:integer;top:integer;var bottom:integer; var index_elrt: indextab): boolean;
external;




.
«eof»