ken@cs.cornell.edu (Ken Birman) (04/16/91)
A user at Bellcore asked if I could re-post the changes need to get isis_remote and isis_probe working in V2.1 (he is aware that they are slow compared with the V3.0 version, but just wants to make sure he understands the interface). 1) in cl_inter.c, you want the code to look like this (changes flagged with ***) lines 393->425 of cl_inter.c/net_send(...): while(!aptr_isnull(to)) { if(!addr_ismine(to)) { register qnode *qp = pg_find(IOQS, to); register ioq *ioqp; if(qp == 0) { *** register msgid = msg_getid(mp); *** address save; *** save = my_address; *** if(exmode == -1 && (msgid&1) *** && to->addr_site == my_site_no && addr_isrclient(to)) { /* ISIS -> remote_xxx */ register message *rmsg = msg_newmsg(); msg_addfield(rmsg, FLD_ISNULLREP, 0, 0, 0); msg_setid(rmsg, msgid); my_address = *to; fbcast_l("mR", msg_getreplyto(mp), GENERIC_RCV_REPLY, rm sg, 0); } my_address = save; if(callback) (*callback)(to, arg0, arg1); } else { ioqp = qp->qu_ioq; if(addr_cmp(to, &ioqp->io_claddr) == 0) (void)intercl_trytosend(mp, ioqp, FALSE, callback, arg0, arg1); else if(callback) (*callback)(to, arg0, arg1); } } ++to; } As for isis_probe, in clib/cl_isis.c, make the routine look like this: static probe_tid, probe_freq; static void isis_send_hello() { register message *msg; address addr; msg = msg_newmsg(); addr = PRO(CL_HELLO); isis_send(&addr, msg); msg_delete(msg); probe_tid = isis_timeout_reschedule(probe_tid, probe_freq*1000, isis_sen d_hello, NULLARG, NULLARG); } int isis_probe(freq, timeout) int freq, timeout; { register message *msg; address addr; static tid; ISIS_ENTER(); msg = msg_gen("%d,%d", freq, timeout); addr = PRO(CL_PROBE); isis_send(&addr, msg); probe_freq = freq; probe_tid = isis_timeout_reschedule(probe_tid, probe_freq*1000, isis_sen d_hello, NULLARG, NULLARG); msg_delete(msg); ISIS_RETURN(0); } ... note that failures will not be detected until the probe interval expires. -- Kenneth P. Birman E-mail: ken@cs.cornell.edu 4105 Upson Hall, Dept. of Computer Science TEL: 607 255-9199 (office) Cornell University Ithaca, NY 14853 (USA) FAX: 607 255-4428