|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 11520 (0x2d00) Types: TextFileVerbose Names: »routenv«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »routenv«
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»