On 28 Feb 01 at 12:27, Arnaldo Carvalho de Melo wrote: > humm, just read the doc and the code, I have to disagree, lets see: > > when we get into the '/* That aren't in the list */' we know that the > current network has not seen this packet, otherwise we would already have > the packet droped in '/* Dump packet if already seen this net */', oh, yes, > we delay putting the if_netnum in the packet, but when it hits ipxitf_send > we do it, before sending it to the wire, so when we get this packet again our > netnum is in the packet and get discarded by /* Dump packet if already seen > this net */, do you see any flaw in this explanation? But code in ac4 puts there (in ipxitf_send) number of sending interface, not receiving. When NetBIOS propagation packet is first sent to network, it does not contain any travelled numbers. When frame is received by router, it verifies that network number on which received this packet is not in the list already - if all implementations are correct, this is never true. Maybe we could even print 'node .... does not follow IPX netbios routing rules correctly'. Of course only few times... Then network number on which packet was received is put into packet. Then for all connected interfaces verify that their numbers are not already in packet - if it is, frame already visited that network. If it is not, send it here. Your code does two last steps in reverse order, and puts sending, not receiving frame number, into packet... > > Either store intrfc->if_netnum into packet before loop with '/* That aren't > > in the list */', or do explicit check for ifcs != intrfc. But storing number > > before looks better - code in ipxrtr_route_skb() does not know receiving > > interface anyway, and you want same number in all copies. > > > > I hope that I missed something obvious. If not, then peoples in larger > > networks should add some '&& 0' into pprop code to disable it. > > Humm, maybe this should be a compile time option? From what I've seen this > code is even still listed as non supported in include/net/ipx.h, look: sysctl. I'd like to have two options: disable routing at all, and disable pprop routing. > #define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast > [Not supported] */ It is supported, unfortunately using 'old' netbios packet propagation logic. There is also 'new' logic (but probably not available as specification), which uses cache for last few netbios packets, and if same packet was already seen, it ignores it. 'old' logic has bad (x^3, where x is number of such routers) behavior when more than one netbios aware router exist between two networks (this is case when more than one frame is bound on each box). > that it reflects the algorithm in the IPX Router specification more > clearly. And I'll set up a Netware 3.12 server in my home lab, I think and > old 386 with 10 MB and 80 MB of disk space is enough. Hey, my home lab is > getting bigger and bigger 8) Get VMware ;-) You won't notice couple of 8MB NW3.11 on dual PIII/800 with 256MB of RAM... Petr Vandrovec vandrove@vc.cvut.cz - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org