Patch #: 12 Type: bug fix Priority: medium Affects: sites running UAR with some router boxes Reported: Tim Nicholson Summary: UAR not sending 6 byte RTMP tuples for all extended networks Archived: munnari.OZ.AU mac/cap.patches/uar.1.0.patch12 Application: 'cd uar; patch -p < uar.1.0.patch12' *** uar.h.orig Thu May 19 19:52:55 1994 --- uar.h Wed Nov 2 12:13:14 1994 *************** *** 15,21 **** * djh@munnari.OZ.AU * * $Author: djh $ ! * $Revision: 1.1.1.4 $ * */ --- 15,21 ---- * djh@munnari.OZ.AU * * $Author: djh $ ! * $Revision: 1.1.1.5 $ * */ *************** *** 287,292 **** --- 287,295 ---- #define RTMP_SUSP 1 #define RTMP_BAD1 2 #define RTMP_BAD2 3 + u_char flags; /* flag bits for this entry */ + #define RTMP_EXTENDED 0x01 + u_char dummy; /* padding to longword */ u_short zquantity; /* number of zones in list */ u_short zexpected; /* expected zones for network */ struct zit *zitlist; /* zone list per network */ *** rtmp.c.orig Tue Oct 18 11:41:25 1994 --- rtmp.c Wed Nov 2 12:13:24 1994 *************** *** 15,21 **** * djh@munnari.OZ.AU * * $Author: djh $ ! * $Revision: 1.1.1.3 $ * */ --- 15,21 ---- * djh@munnari.OZ.AU * * $Author: djh $ ! * $Revision: 1.1.1.4 $ * */ *************** *** 147,152 **** --- 147,155 ---- rtmp->zexpected = 1; rtmp->zitlist = ZITNULL; + if (iflist[ifn].phase == PHASE2) + rtmp->flags |= RTMP_EXTENDED; + if (new) { rtmp_insert(rtmp); if (debug & RTMPDEBUG) *************** *** 318,323 **** --- 321,329 ---- rtmp_insert(rtmp); } } + if (data[2] & 0x80) + if (rtmp != RTMPNULL) + rtmp->flags |= RTMP_EXTENDED; data += tuplelen; tuples++; } *************** *** 526,532 **** data[1] = rtmp->net_lo & 0xff; data[2] = (rtmp->state < RTMP_BAD1) ? rtmp->dist : 31; incrm = 3; ! if (rtmp->net_lo != rtmp->net_hi) { data[2] |= 0x80; data[3] = rtmp->net_hi >> 8; data[4] = rtmp->net_hi & 0xff; --- 532,538 ---- data[1] = rtmp->net_lo & 0xff; data[2] = (rtmp->state < RTMP_BAD1) ? rtmp->dist : 31; incrm = 3; ! if (rtmp->flags & RTMP_EXTENDED) { data[2] |= 0x80; data[3] = rtmp->net_hi >> 8; data[4] = rtmp->net_hi & 0xff; *************** *** 808,821 **** } fprintf(r, "UAR RTMP Table:\n\n"); ! fprintf(r, "low high dst ifc brNet Nd State Zone\n"); for (i = 0, count = 0; i < RTMPTABSIZ; i++) { rtmp = rtmpTab[i]; while (rtmp != RTMPNULL) { ! fprintf(r, "%3d.%-3d %3d.%-3d %3d %3d %3d.%-3d %2x %7s", ! rtmp->net_lo >> 8, rtmp->net_lo & 0xff, rtmp->net_hi >> 8, ! rtmp->net_hi & 0xff, rtmp->dist, rtmp->intfc, rtmp->rnet >> 8, rtmp->rnet & 0xff, rtmp->rnode, state[rtmp->state]); zit = rtmp->zitlist; while (zit != ZITNULL) { --- 814,829 ---- } fprintf(r, "UAR RTMP Table:\n\n"); ! fprintf(r, "low high dst ifc brNet Nd State Zone\n"); for (i = 0, count = 0; i < RTMPTABSIZ; i++) { rtmp = rtmpTab[i]; while (rtmp != RTMPNULL) { ! fprintf(r, "%3d.%-3d %c %3d.%-3d %3d %3d %3d.%-3d %2x %7s", ! rtmp->net_lo >> 8, rtmp->net_lo & 0xff, ! (rtmp->flags & RTMP_EXTENDED) ? '-' : ' ', ! rtmp->net_hi >> 8, rtmp->net_hi & 0xff, ! rtmp->dist, rtmp->intfc, rtmp->rnet >> 8, rtmp->rnet & 0xff, rtmp->rnode, state[rtmp->state]); zit = rtmp->zitlist; while (zit != ZITNULL) { *************** *** 857,863 **** --- 865,874 ---- if (rtmp == RTMPNULL) { incr(uarMemoryError); incr(rtmpRoutingTableOverflows); + return(RTMPNULL); } + + rtmp->flags = 0x00; return(rtmp); } *** README.orig Sat Oct 22 21:47:15 1994 --- README Wed Nov 2 11:53:05 1994 *************** *** 4,10 **** The University of Melbourne djh@munnari.OZ.AU October, 1993 ! version 1.0.11 --- 4,10 ---- The University of Melbourne djh@munnari.OZ.AU October, 1993 ! version 1.0.12