# IPRoute2-&iproute2-version;

The IPRoute2 package contains programs for basic and advanced IPV4-based networking.

## Installation of IPRoute2

By default, this package builds the `arpd` program, which is dependent on Berkeley DB. Because `arpd` is not a very common requirement on a base Linux system, remove the dependency on Berkeley DB by using the commands below. If the `arpd` binary is needed, instructions for compiling Berkeley DB can be found in CBLFS at .

    sed -i '/^TARGETS/s@arpd@@g' misc/Makefile
    sed -i '/ARPD/d' Makefile
    rm -v man/man8/arpd.8

Remove unused libnl headers:

    sed -i '/netlink\//d' ip/ipl2tp.c

Compile the package:

    make DESTDIR= DOCDIR=/usr/share/doc/iproute2 \
        MANDIR=/usr/share/man

## The meaning of the make option:

`DESTDIR=`

- This option overrides the default DESTDIR of /usr, so that that the IPRoute2 binaries will be installed into `/sbin`. This is the correct location according to the FHS, because some of the IPRoute2 binaries are used by the CLFS-Bootscripts package.

`DOCDIR=/usr/share/doc/iproute2 MANDIR=/usr/share/man`

- The DESTDIR=/ parameter would cause documentation to be installed into `/share/doc` and `/share/man`. These options ensure the docs are installed to the correct locations.

This package does not come with a test suite.

Install the package:

    make DESTDIR= DOCDIR=/usr/share/doc/iproute2 \
        MANDIR=/usr/share/man install

## Contents of IPRoute2

Installed programs Installed directories
- ctstat (link to lnstat), genl, ifcfg, ifstat, ip, lnstat, nstat, routef, routel, rtacct, rtmon, rtpr, rtstat (link to lnstat), ss, and tc /etc/iproute2, /lib/tc, /usr/lib/tc, /usr/share/doc/iproute2

Short Descriptions

`ctstat`

- Connection status utility

`genl`

- Needs description

`ifcfg`

- A shell script wrapper for the `ip` command

`ifstat`

- Shows the interface statistics, including the amount of transmitted and received packets by interface

`ip`

- The main executable. It has several different functions:

  `ip link `[device]`` allows users to look at the state of devices and to make changes

  `ip addr` allows users to look at addresses and their properties, add new addresses, and delete old ones

  `ip neighbor` allows users to look at neighbor bindings and their properties, add new neighbor entries, and delete old ones

  `ip rule` allows users to look at the routing policies and change them

  `ip route` allows users to look at the routing table and change routing table rules

  `ip tunnel` allows users to look at the IP tunnels and their properties, and change them

  `ip maddr` allows users to look at the multicast addresses and their properties, and change them

  `ip mroute` allows users to set, change, or delete the multicast routing

  `ip monitor` allows users to continously monitor the state of devices, addresses and routes

`lnstat`

- Provides Linux network statistics. It is a generalized and more feature-complete replacement for the old `rtstat` program

`nstat`

- Shows network statistics

`routef`

- A component of `ip route`. This is for flushing the routing tables

`routel`

- A component of `ip route`. This is for listing the routing tables

`rtacct`

- Displays the contents of `/proc/net/rt_acct`

`rtmon`

- Route monitoring utility

`rtpr`

- Converts the output of `ip -o` back into a readable form

`rtstat`

- Route status utility

`ss`

- Similar to the `netstat` command; shows active connections

`tc`

- Traffic Controlling Executable; this is for Quality Of Service (QOS) and Class Of Service (COS) implementations

  `tc qdisc` allows users to setup the queueing discipline

  `tc class` allows users to setup classes based on the queuing discipline scheduling

  `tc estimator` allows users to estimate the network flow into a network

  `tc filter` allows users to setup the QOS/COS packet filtering

  `tc policy` allows users to setup the QOS/COS policies