Appendix: Migrating from io-net

This appendix describes the compatibility between io-net and io-pkt.

For information about converting drivers, see the Porting an io-net driver to io-pkt technote.

Overview

The previous generation of the QNX Neutrino networking stack (io-net) was designed based on a modular approach. It served its purpose in the past by allowing users to separate protocols and drivers, but this came at the expense of incurring a significant amount of overhead when converting to a particular protocol's domain from io-net and vice versa.

Note that io-pkt and the new utilities and daemons aren't backward-compatible with io-net.


Changes to the networking stack


Changes to the networking stack.

Compatibility between io-net and io-pkt

Both io-net and io-pkt can co-exist on the same system. The updated socket library provided with io-pkt is compatible with io-net. This lets you run both io-net and io-pkt simultaneously.


Note: The reverse isn't true; if you use the io-net version of the socket library with io-pkt, unresolved symbols will occur when you attempt to use the io-pkt configuration utilities (e.g. ifconfig).

We've updated the following binaries for io-pkt:

Compatibility issues

Binaries
The following replaced binaries are known to have compatibility issues with io-net. Essentially, new utilities are likely to contain enhanced features that aren't supported by the old stack:

The following io-net binaries are known to have compatibility issues with io-pkt:

Sockets
The socket library is fully backward-compatible with all BSD socket API applications. This also extends to the routing socket.
Protocols
A bind() on an AF_INET socket now requires that the second argument have its (struct sockaddr *)->af_family member be initialized to AF_INET. Up until QNX Neutrino 6.4.0, a value of 0 was accepted and assumed to be this value.
Drivers
A special “shim” layer makes drivers that were written for io-net compatible with io-pkt. For more information, see the Network Drivers chapter in this guide.

Behavioral differences

Simultaneous support

You can run both io-net and io-pkt simultaneously on the same target if the relevant utilities and daemons for each stack are present. Here are some specific issues you should be aware of:

Discontinued features

The io-pkt networking stack doesn't support the following features:

Using pfil hooks to implement an io-net filter

We recommend that you use pfil hooks to rewrite your io-net filter to work in io-pkt. Here are the basic steps: