kuan@TWG.COM (Chia-Chee Kuan) (03/17/89)
According to the pseudo code listed in appendix C page C-47 in "Technical Reference: IBM PC Network", it does seems to me a received datagram completes all pending RECEIVE DATAGRAM commands which have matching source and destination specification. This brings the two most authoritative documents, "Technical Reference: IBM PC Network" and RFC1001/1002, together without conflicting each other. The Wollongong RFC1001/1002 implementaion is consistent with Brett Glass's work and the references that he posted. I believe there are many NetBIOS implementations that behave the same. We would like to see a consensus among NetBIOS implementors to ensure the RFC1001 standard ( or the other way around). Chia-Chee Kuan The Wollongong Group Tel: 415-962-7171
glass@anableps.berkeley.edu (Brett Glass) (03/18/89)
In article <8903161245.aa20821@Obelix.TWG.COM> kuan@TWG.COM (Chia-Chee Kuan) wri tes: >According to the pseudo code listed in appendix C page C-47 in "Technical >Reference: IBM PC Network", it does seems to me a received datagram completes >all pending RECEIVE DATAGRAM commands which have matching source and >destination specification. This brings the two most authoritative >documents, "Technical Reference: IBM PC Network" and RFC1001/1002, together >without conflicting each other. I've examined Appendix C, page C-47 of "Technical Reference: IBM PC Network," and I see the section you're referring to; indeed, there isn't a clear indication that the checking process terminates after the first match is found. [I originally thought I DID see such an indication, and posted two articles to that effect to this newsgroup. But I cancelled them after taking another look at the IBM manual.] The one thing I can say for certain -- because I've checked it -- is that NO IBM implementation of NetBIOS has actually satisfied more than one Receive Datagram command with a single datagram. IBMer Dave Schwaderer's book and third-party NetBIOS implementations also support this modus operandi. It's possible that the description in IBM's manual was never checked for accuracy, or even that it was INTENTIONALLY vague to make correct implementation more difficult. But the de facto standard is that only one command is satisfied. As it turns out, the "Receive Datagram" pseudocode in RFC1002 could be made consistent with "reality" by moving a single line and deleting one comment: X Delete /* X * Replicate received NetBIOS datagram for X * each recipient X */ FOR EACH pending NetBIOS user's receive datagram operation BEGIN IF source name of operation matches destination name of packet THEN BEGIN deliver USER_DATA from UDP packet(s); +---------> Move | END | END /* for each */ --<< return; END /* good */ I think it might be a good idea to make this change, and to correct the other parts of the documents accordingly. --Brett
karl@TRWIND.IND.TRW.COM (Karl Auerbach) (03/18/89)
Once more -- RFC1001/1002 specify only the protocol, not the service interface. It is unfortunate that Sytek/IBM and RFC1002's pseudo code tend to mix the protocol with the service functions. To that extent RFC1001/2 are misleading. It would simply have been better if RFC1001/2 had avoided even mentioning NCB's and the typical operations entirely. It would have avoided this discussion about the material in the RFCs which are not part of the specification but which were included merely to be helpful and assist understanding. I am sure this is why OSI doucments are so devoid of explaination. In any case Brett's comments are well taken -- the RFC should not be misleading even in the ancillary material. And the pseudo code should be changed to remove references to operation of the service interface. The only question in my mind is what is the "official" version of the interface. I may have to grab some Sytek/IBM PC-net boards (the orignal ones) and run a test. --karl--