Files
ipx-utils/README.md
Mario Fetka 3c718bbabf
All checks were successful
Source release / source-package (push) Successful in 1m1s
integrate ipxripd documentation into README
2026-04-29 22:24:43 +02:00

220 lines
6.6 KiB
Markdown

# ipx-utils
`ipx-utils` is a maintained collection of classic Linux IPX utilities, packet inspection tools, and an IPX RIP/SAP router daemon.
The package is intended for systems that still need to configure, inspect, or route legacy Novell NetWare/IPX networks. It combines the standalone `ipx-utils` tools with additional dump/parse utilities and the historical `ipxripd` router daemon (`ipxd`).
> **Kernel note:** IPX support was removed from the mainline Linux kernel in Linux 4.18. On newer kernels you need an external IPX kernel module before these tools can be useful.
## Included programs
### IPX configuration utilities
These tools are installed into `sbindir`, usually `/usr/sbin`.
| Program | Purpose |
| --- | --- |
| `ipx_configure` | Configure IPX networking automatically or semi-automatically. |
| `ipx_interface` | Add, delete, and inspect IPX interfaces. |
| `ipx_internal_net` | Configure the IPX internal network number. |
| `ipx_route` | Add, delete, and inspect IPX routes. |
| `ipx_cmd` | Netlink-based helper for IPX interface and route operations. |
### Packet dump and parser tools
| Program | Purpose |
| --- | --- |
| `ipx_dump` | Capture and dump IPX packets from a network interface. |
| `ipx_parse` | Decode textual/raw packet dumps generated by `ipx_dump`. |
Typical usage:
```sh
ipx_dump -r -d eth0 | ipx_parse
```
### IPX RIP/SAP router daemon
| Program | Purpose |
| --- | --- |
| `ipxd` | IPX RIP/SAP daemon. Makes a Linux machine act as an IPX router. |
`ipxd` is integrated from the historical `ipxripd` router daemon. It exchanges IPX RIP and SAP information with other routers and servers on the network and is intended for Linux systems that need IPX routing and service advertisement support without running a larger NetWare emulator such as `mars_nwe`.
The historical `ipxripd` release was developed for Linux 1.2.13 and 1.3.x kernels. At that time there was no widely accepted standard RIP/SAP daemon for Linux. Existing alternatives either required kernel patches, implemented more than the RIP/SAP functionality, or did not implement RIP and SAP correctly.
The original goals were:
- provide a small IPX RIP/SAP daemon for Linux;
- avoid requiring kernel patches;
- continue working while IPX interfaces are reconfigured;
- support convenient IPX-over-PPP remote access setups;
- work with Linux internal IPX networks.
Although the original README mentions Linux 1.3-era kernel behavior and optional historical kernel patches, this standalone `ipx-utils` integration builds `ipxd` as part of the modern Autotools-based package.
`ipxd` can discover most required routing information by scanning the Linux IPX interface and routing tables and by exchanging RIP/SAP packets on the network. The value it cannot reliably discover is the transmission cost of each physical interface.
That cost is configured in `/etc/ipx_ticks`. The value is expressed in IPX RIP ticks, where one tick is approximately 55 ms.
Example `/etc/ipx_ticks`:
```conf
# Tick values for IPX interfaces
#
# device name ticks value
eth0 1
ppp0 7
```
Blank lines and lines beginning with `#` are ignored. Interfaces not listed in `/etc/ipx_ticks` use the default value `1`.
The historical startup example was:
```sh
if [ -f /usr/sbin/ipxd ]; then
echo "Starting IPX RIP/SAP daemon"
/usr/sbin/ipxd
fi
```
On modern systems this should normally be adapted to the system's init system or service manager. For a manual test run:
```sh
sudo /usr/sbin/ipxd
```
Consult the manual pages for details:
```sh
man 8 ipxd
man 5 ipx_ticks
```
## Installed files
With the usual configuration:
```sh
./configure --prefix=/usr --sysconfdir=/etc
```
installation places files roughly here:
```text
/usr/sbin/ipx_configure
/usr/sbin/ipx_interface
/usr/sbin/ipx_internal_net
/usr/sbin/ipx_route
/usr/sbin/ipx_cmd
/usr/sbin/ipx_dump
/usr/sbin/ipx_parse
/usr/sbin/ipxd
/etc/ipx_ticks
/usr/share/man/man5/ipx_ticks.5
/usr/share/man/man8/ipx_configure.8
/usr/share/man/man8/ipx_interface.8
/usr/share/man/man8/ipx_internal_net.8
/usr/share/man/man8/ipx_route.8
/usr/share/man/man8/ipx_cmd.8
/usr/share/man/man8/ipx_dump.8
/usr/share/man/man8/ipx_parse.8
/usr/share/man/man8/ipxd.8
/usr/share/locale/*/LC_MESSAGES/ipx-utils.mo
```
## Building from a release tarball or generated source checkout
For normal users:
```sh
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
```
To build without installing:
```sh
./configure --prefix=/usr --sysconfdir=/etc
make V=1
```
To stage an installation into a temporary directory:
```sh
rm -rf /tmp/ipx-utils-install
make DESTDIR=/tmp/ipx-utils-install install
find /tmp/ipx-utils-install -type f | sort
```
## Building from a developer checkout
If `configure` or generated Automake files are missing or outdated, regenerate them:
```sh
autoreconf -fi
./configure --prefix=/usr --sysconfdir=/etc
make V=1
```
Gettext support is used for message catalogs. On Debian/Ubuntu-like systems, the relevant development tools are usually:
```sh
sudo apt-get install build-essential autoconf automake autopoint gettext pkg-config
```
## Creating release archives
The project supports Automake source distributions:
```sh
./configure --prefix=/usr --sysconfdir=/etc
make distcheck
```
On success, this creates release archives such as:
```text
ipx-utils-<version>.tar.gz
ipx-utils-<version>.tar.xz
```
`make distcheck` performs an out-of-tree build, install, uninstall, and distribution test. This is the preferred check before tagging a release.
## Gitea release workflow
The repository can be built by a Gitea Action that runs:
```sh
autoreconf -fi
./configure --prefix=/usr --sysconfdir=/etc
make V=1
make distcheck
```
For tagged releases such as `v1.4`, the workflow should upload the generated `ipx-utils-1.4.tar.gz` and `ipx-utils-1.4.tar.xz` files as release assets.
For development builds from `master`, the workflow can generate development archives with a git-derived suffix.
## Notes
- The tools require kernel-level IPX support.
- Most operations require root privileges or equivalent capabilities.
- `ipx_dump` uses raw packet sockets and may temporarily enable promiscuous mode on the selected interface.
- `ipxd` is intended for legacy IPX RIP/SAP routing environments.
## Authors and history
Original `ipx-utils` work: Greg Page.
Further standalone `ipx-utils` development since version 1.2: Dmitry Podgorny.
`ipxripd`/`ipxd` historical authors include Ales Dyrak and Volker Lendecke.
Current standalone maintenance and integration work: Mario Fetka.
## License
The historical `ipxripd` metadata identifies the router daemon code as GPL. See the repository license files and source headers for the exact license terms of each component.