Q: My application sends raw IP packets using an Open
Transport "rawip" endpoint in IP_HDRINCL mode.
Under Open Transport 2.5.x (Mac OS 9.0), the packets never
make it to the wire. What's up?
A: Open Transport 2.5 includes a significant upgrade to
both the STREAMS infrastructure (Mentat Portable Streams
3.3) and the TCP/IP stack (Mentat TCP/IP 3.5). While we
worked hard to ensure compatibility with previously releases
of Open Transport, a few things have changed:
- The original behavior of a raw IP endpoint in
IP_HDRINCL mode is defined in the
Limitations
of the Header-Included Mode section of
Inside
Macintosh: Networking with Open Transport. Open
Transport 2.5.x and beyond change this definition in one
minor but significant aspect. The text "Version. This
field is forced to a value of 4 to reflect the fact that
you're using IP version 4." should now read "Version.
You must set this field 4 to reflect the
fact that you're using IP version 4."
- Open Transport now checks that the Total Length field
of the IP header is the same as the length of the data
supplied to
OTSndUData (i.e.
udata->udata.len ). If they are not the
same, OT discards the IP packet without sending it. The
debug version of OT will report this event to the STREAMS
log driver, which you can view using
OTStreamLogViewer.
|