Networking manager
Syntax:
io-pkt-variant [-d driver [driver_options]] [-i instance]
               [-P priority] [-p protocol [protocol_options]]
               [-S] [-t threads] [-v]
where variant is one of v4, v4-hc, or
v6-hc.
 
Options:
- -d driver [driver_options]
 
- Start the specified
  devn-*
  or
  devnp-*
  driver:
  
  
  - You can specify driver without the devn- or
    devnp- prefix or the .so extension.
    For example, to start the 
    devnp-i82544.so
    driver, specify -d i82544.
    If you specify the driver this way, io-pkt* looks for a
    devnp- version first.
    If there isn't one, io-pkt* loads the legacy
    io-net (devn-) version, using a special
    "shim" layer,
    devnp-shim.so.
  
 
  - If you want to load a specific version of a driver, specify the
    full path of the module (e.g.,
    /lib/dll/devn-i82544.so).
  
 
  
  
  The driver_options argument is a list of driver-specific options
  that the stack passes to the driver.
  
  Note: 
  Use commas, not spaces, to separate the options.
  
  The stack processes various driver options; for more information, see
  "Generic driver options,"
  below.
  
   
 
- -i instance
 
- The stack instance number, which is useful if you're running multiple
  instances of io-pkt.
  The io-pkt manager will service mount requests of type
  io-pktX, where X is the instance number.
  For example:
io-pkt-v4 -i1 -ptcpip prefix=/alt
mount -Tio-pkt1 /lib/dll/devnp-i82544.so
 
- -P priority
 
- The priority to use for io-pkt's main thread.
  The default is 21.
 
- -p protocol [protocol_options]
 
- The protocol to start, followed by a list of protocol-specific options.
  
Note: 
  Use commas, not spaces, to separate the options.
  
  
  The available protocols include:
  
  
  
  
    | Protocol | 
    Module | 
  
  
  
  
    | autoip | 
    lsm-autoip.so | 
  
  
    | avb | 
    lsm-avb.so | 
  
  
    | pf-v4 | 
    lsm-pf-v4.so
          (for use with io-pkt-v4 or io-pkt-v4-hc)
     | 
  
  
    | pf-v6 | 
    lsm-pf-v6.so
          (for use with io-pkt-v6-hc)
     | 
  
  
    | qnet | 
    lsm-qnet.so | 
  
  
    | slip | 
    lsm-slip.so
        (for use with io-pkt-v4 or io-pkt-v4-hc)
     | 
  
  
    | tcpip | 
    The stack includes TCP/IP; you need to specify this protocol
         only if you want to pass additional parameters
         (e.g., prefix=) to it.
         For more information about the options, see below.
     | 
  
  
  
 
 
- -S
 
- Don't register a SIGSEGV handler to quiesce the hardware
  if a segmentation violation occurs.
  This can help with debugging if it isn't possible to get a backtrace to
  the original code that generated the SIGSEGV through the
  signal handler.
 
- -t threads
 
- The number of processing threads to create.
  By default, one thread is created per CPU.
  These threads are the packet-processing threads that operate at Layer2
  and may become the stack thread.
  For more information, see the
  Overview
  chapter of the QNX Neutrino Core Networking User's Guide.
 
- -v
 
- If any errors occur while loading drivers and protocols,
  io-pkt sends messages to
  slogger.
  If you specify this option, io-pkt also displays them
  on the console.
 
TCP/IP options
If you specify the -p tcpip protocol, the
protocol_options list can consist of one or more of the 
following, separated by commas without whitespace:
- bigpage_strict
 
- If the value of the pagesize option is bigger than
  sysconf(_SC_PAGESIZE), it's used only for the
  mbuf and cluster pools unless you also specify this option,
  in which case the page size is used for all pools.
 
- cache=0
 
- Disable the caching of packet buffers.
  This should be needed only as a debugging facility.
 
- confstr_monitor
 
- Monitor changes to configuration strings, in particular CS_HOSTNAME.
  By default, io-pkt gets the hostname once at startup.
 
- enmap
 
- Prevent automatic stack mapping of enXX interface
  names to the actual interface names.
  By default, the stack automatically maps the first registered interface
  to en0 (if a real en0 isn't present), the second
  interface to en1, and so on,
  in order to preserve backwards compatibility with io-net-style
  command lines.
 
- fastforward=X
 
- Enable (1) or disable (0) fastforwarding path.
  This is useful for gateways.
  This option enables, and is enabled by, forward;
  to enable only forward, specify forward,fastforward=0.
 
- forward
 
- Enable forwarding of IPv4 packets between interfaces;
  this enables fastforward by default.
  The default is off.
 
- forward6
 
- (io-pkt-v6-hc only)
  Enable forwarding of IPv6 packets between interfaces; off by default.
 
- ipsec
 
- (io-pkt-v4-hc and io-pkt-v6-hc only)
  Enable IPsec support; off by default.
 
- mbuf_cache=X
 
- As mbufs are freed after use, rather than returning them to 
  the internal pool for general consumption, up to X
  mbufs are cached per thread to allow quicker retrieval
  on the next allocation.
 
- mclbytes=size
 
- The mbuf cluster size.
  A cluster is the largest amount of contiguous memory used by an mbuf.
  If the MTU is larger than a cluster, multiple clusters are used to hold the packet.
  The default cluster size is 2 KB (to fit a standard 1500-byte Ethernet packet).
  
  Specifying the cluster size can improve performance; for more information, see
  "Jumbo packets and hardware checksumming"
  in the Network Drivers chapter of the
  QNX Neutrino Core Networking User's Guide.
  
 
- mfib_gid_map=string
 
- Specify a semicolon-separated mapping of GIDs to Forwarding Information Bases (FIBs).
  For example, to map SGID 750 and 760 to FIBs 1 and 2, respectively, specify:
mfib_gid_map=750_1;760_2
 
- pagesize=X
 
- The smallest amount of data allocated each time for the internal memory pools.
  This quantum is then carved into chunks of varying size, depending on the pool.
 
- pfil_ipsec
 
- (io-pkt-v4-hc and io-pkt-v6-hc only)
  Run packet filters on packets before encryption.
  The default is to do it after encryption.
 
- pkt_cache=X
 
- As mbuf and cluster combinations are freed after use,
  rather than return them to the internal pool for general consumption,
  up to X mbufs and clusters are cached 
  per thread to allow quicker retrieval on the next allocation.
 
 
- pkt_typed_mem=object
 
- Allocate packet buffers from the specified typed memory object.
  For example:
io-pkt -ptcpip pkt_typed_mem=ram/dma
 
- prefix=/path
 
- The path to prepend to the traditional /dev/socket.
  The is useful when running multiple stacks (see the -i option).
  Clients can target a particular stack by using the SOCK environment variable.
  For example:
  
  
io-pkt -i1 -ptcpip prefix=/alt
SOCK=/alt ifconfig -a
 
- random
 
- Use /dev/random as the source of random data.
  By default, io-pkt uses a builtin pseudo-random number generator.
 
- recv_ctxt=X
 
- Specify the size of the receive context buffer, in bytes.
  The default is 65536; the minimum is 2048.
 
- reuseport_unicast
 
- If using the SO_REUSEPORT socket option, received unicast
  UDP packets are delivered to all sockets bound to the port.
  The default is to deliver only multicast and broadcast to all sockets.
  
 
- rx_prio=X or 
  rx_pulse_prio=X
 
- The priority for receive threads to use (the default is 21).
  A driver-specific priority option (if supported by the driver) can override this priority.
 
- somaxconn=X
 
- Specify the value of SOMAXCONN, the maximum length of the 
  listen queue used to accept new TCP connections.
  The minimum is the value in <sys/socket.h>.
 
- stackguard
 
- Introduce a guard page between each thread's stack to aid in debugging
  "blown stack handling" panics.
  This will cause a SIGSEGV at the point of stack overrun
  rather than at the end of the operation.
  
Note: 
  If the value of the 
stacksize option isn't a multiple of
  the system page size, then this option increases the stack size until it is.
  A message is logged to
  
slogger
  in this case advising of the new size.
  This increase in stack size may change the issue being debugged.
  
 
 
- stacksize=X
 
- Specify the size of each thread's stack, in bytes.
  The default is 4096.
 
- threads_incr=X
 
- If the supply of functional connections is exhausted, increment their number by this
  amount, up to the value of threads_max.
  The default is 25.
  
Note: 
  The term "threads" in the TCP/IP threads_* options is a misnomer;
  it really refers to functional TCP/IP connections or blocking operations (read(),
  write(), accept(), etc.).
  It has nothing to do with the number of threads running in io-pkt-*.
  
 
- threads_max=X
 
- Specify the maximum number of functional TCP/IP connections that the stack can service simultaneously.
  The default is 200.
 
- threads_min=X
 
- Specify the minimum number of functional TCP/IP connections.
  The default is 15, and the minimum is 4.
 
- timer_pulse_prio=priority
 
- The priority to use for the timer pulse.
  The default is 21. 
 
 
Description:
The io-pkt manager provides support for
Internet domain sockets, Unix domain sockets, and dynamically loaded networking modules.
It comes in several stack variants:
- io-pkt-v4
 
- An IPv4 memory-reduced variant that doesn't support:
  
  - IPv6
 
  - Crypto / IPSec
 
  - 802.11 a/b/g Wi-Fi
 
  - Bridging
 
  - GRE / GRF
 
  - Multicast routing
 
  - Multipoint PPP
 
  
 
- io-pkt-v4-hc
 
- IPv4 version of the stack that has full encryption and Wi-Fi capability
  built in and includes hardware-accelerated cryptography capability (Fast IPsec).
 
- io-pkt-v6-hc
 
- IPv6 version of the stack (includes IPv4 as part of v6) that has full
  encryption and Wi-Fi capability, also with hardware-accelerated cryptography.
 
Note: 
In order to use SSL connections, you must have started
random
with the 
-t option.
 
After you've launched io-pkt*, you can use the
mount
command to start drivers or load additional modules such as
lsm-pf-v4.so or lsm-pf-v6.so.
If you want to pass options to the driver, use the -o option
before the name of the shared object.
For example:
mount -T io-pkt -o mac=12345678 devnp-bge.so
Note: 
- You can use
  umount
  to unmount legacy io-net drivers, but not io-pkt* drivers.
  Other drivers may allow you to detach the driver from the stack, by using
  ifconfig's
  destroy command (if the driver supports it).
 
- If io-pkt runs out of threads, it sends a message to
  slogger, and anything
  that requires a thread blocks until one becomes available.
 
- Native io-pkt and ported NetBSD drivers don't put entries
  into the /dev/io-net namespace, so a
  waitfor
  command for such an entry won't work properly in buildfiles or scripts.
  Use
  if_up -p
  instead; for example, instead of waitfor /dev/io-net/en0, use
  if_up -p en0.
 
- If a TCP/IP packet is smaller than the minimum Ethernet packet size,
  the packet may be padded with random data, rather than zeroes.
 
 
The io-pkt manager supports TUN and TAP.
To create the interfaces, use ifconfig:
ifconfig tun0 create
ifconfig tap0 create
For more information, see the NetBSD documentation:
Generic driver options
The stack processes the following generic driver options:
- name=prefix
 
- Override the default interface prefix used for network drivers.
  For example:
io-pkt-v4 -di82544 name=en
  
  starts the devnp-i82544.so driver with the
  io-net-style interface naming convention (enXX).
  You can also use this option to assign interface names based on (for example) functionality:
  
io-pkt-v4 -di82544 pci=0,name=wan
 
- unit=number
 
- The interface number to use.
  If number is negative, it's ignored.
  By default, the interfaces are numbered starting at 0.
 
Note: 
These options don't work with legacy io-net legacy drivers.
If you attempt to use them with a devn- driver,
the driver won't be loaded, and the log will include an "unknown option" error.
The stack also processes the following driver options for all USB drivers using
the NetBSD-to-QNX conversion library to let you identify a
particular USB device using information obtained from running
usb -v:
- did=ID
 
- Device product ID.
 
- vid=ID
 
- Device vendor ID.
 
- devno=addr
 
- Device address, as reported by the usb utility.
 
- busno=num
 
- Host controller, as reported by the usb utility
 
For example:
io-pkt-v4-hc -drum did=0x0020,vid=0x13b1,devno=1,busno=1