rapatel@porthos.rutgers.edu ( Rakesh Patel) (05/09/88)
I am attempting to get a Hayes Interbridge working properly with a kbox (KFPS-2) running KIP 01/88. However, I can get everything to work properly under KIP 09/87. Here is a description: When hooking a Mac to the network with the Kbox, I get the zone list sometimes appearing, and sometimes not appearing under chooser. Repeatedly opening and closing the chooser results in zones being recognized about 1/3 of the time. When attempting to look for servers or printers, I sometimes get a response from a server, but many times no response at all. All network services were equally bad in response. When hooking the Mac onto the other net, (with the interbridge appropriately configured), I never get a zone list under chooser. I made sure to aviod having running machines up when configuring the network numbers, and that the kbox and Interbridge absolutely agreed on the same appletalk network number. The problem seems to be more of a KIP <-> Interbridge software problem. (We have multiple InterBridges, Kboxes, and connectors, and have ruled out hardware problems.) Anyone gotten it to work successfully? Any ideas/suggestions? Rakesh Patel.
cck@CUNIXC.COLUMBIA.EDU (Charlie C. Kim) (05/12/88)
KIP 01/88's zip query handling is messed up. My fault: this got introducted when the code was made to handle long and short ddp in zipinput. The patch follows. The patch also fixes another minor problem where the count returned might have been incorrect. It has been tested against Kinetic's ethertalk gateway and Pacer's VMS gateway. (By the way, Pacer does the same thing as AlisaTalk -- it setups a an AppleTalk Bridge to front end the VMS system). Charlie C. Kim User Services Columbia University %%%%%%%START OF PATCH%%%%%%%%%% *** /tmp/,RCSt1024362 Wed May 11 14:38:33 1988 --- rtmp.c Tue May 10 17:02:39 1988 *************** *** 588,594 /* else pure ZIP */ if (ddp.type != ddpZIP) goto drop; ! z = (struct ZIP *)ip->p_off+lapSize+ddpSize; if (z->command == zipQuery) goto query; #ifdef notdef --- 588,594 ----- /* else pure ZIP */ if (ddp.type != ddpZIP) goto drop; ! z = (struct ZIP *)(ip->p_off+lapSize+ddpSize); if (z->command == zipQuery) goto query; #ifdef notdef *************** *** 602,608 goto drop; po = op->p_off + lapSize + ddpSize + sizeof(struct ZIP); sp = (u_short *)(z+1); ! for (count = 0, len = 0 ; count < z->count && len < 512 ; count++) { u.s = i = *sp++; /* network */ for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) if (i == ar->net && ar->zone) --- 602,608 ----- goto drop; po = op->p_off + lapSize + ddpSize + sizeof(struct ZIP); sp = (u_short *)(z+1); ! for (j=0, count = 0, len = 0 ; j < z->count && len < 512 ; j++) { u.s = i = *sp++; /* network */ for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) { if (i == ar->net && ar->zone) *************** *** 604,610 sp = (u_short *)(z+1); for (count = 0, len = 0 ; count < z->count && len < 512 ; count++) { u.s = i = *sp++; /* network */ ! for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) if (i == ar->net && ar->zone) break; if (ar >= &aroute[NAROUTE]) --- 604,610 ----- sp = (u_short *)(z+1); for (j=0, count = 0, len = 0 ; j < z->count && len < 512 ; j++) { u.s = i = *sp++; /* network */ ! for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) { if (i == ar->net && ar->zone) break; } *************** *** 607,612 for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) if (i == ar->net && ar->zone) break; if (ar >= &aroute[NAROUTE]) continue; /* no match */ pi = azone[ar->zone]; --- 607,613 ----- for (ar = &aroute[0]; ar < &aroute[NAROUTE] ; ++ar) { if (i == ar->net && ar->zone) break; + } if (ar >= &aroute[NAROUTE]) continue; /* no match */ count++; /* found one */ *************** *** 609,614 break; if (ar >= &aroute[NAROUTE]) continue; /* no match */ pi = azone[ar->zone]; *po++ = u.c[0]; /* copy in network */ *po++ = u.c[1]; --- 610,616 ----- } if (ar >= &aroute[NAROUTE]) continue; /* no match */ + count++; /* found one */ pi = azone[ar->zone]; *po++ = u.c[0]; /* copy in network */ *po++ = u.c[1]; *************** *** 613,620 *po++ = u.c[0]; /* copy in network */ *po++ = u.c[1]; bcopy(pi, po, *pi + 1); /* copy in zone */ ! po += (*pi + 1); ! len += (*pi + 3); } z = (struct ZIP *)(op->p_off + lapSize + ddpSize); z->command = zipReply; --- 615,622 ----- *po++ = u.c[0]; /* copy in network */ *po++ = u.c[1]; bcopy(pi, po, *pi + 1); /* copy in zone */ ! po += (*pi + 1); /* string + count */ ! len += (*pi + 3); /* string + count + netnumber */ } z = (struct ZIP *)(op->p_off + lapSize + ddpSize); z->command = zipReply; %%%%%%%END OF PATCH%%%%%%%%%%