Paul Evans

NAME

IO::Socket::Netlink::Route - Object interface to NETLINK_ROUTE netlink protocol sockets

DESCRIPTION

This subclass of IO::Socket::Netlink implements the NETLINK_ROUTE protocol. This protocol allows communication with the Linux kernel's networking stack, allowing querying or modification of interfaces, addresses, routes, and other networking properties.

This module is currently a work-in-progress, and this documentation is fairly minimal. The reader is expected to be familiar with NETLINK_ROUTE, as it currently only gives a fairly minimal description of the Perl-level wrapping of the kernel level concepts. For more information see the documentation in rtnetlink(7).

MESSAGE CLASSES

Each message type falls into one of the following subclasses, chosen by the value of the nlmsg_type field. Each subclass provides access to the field headers of its message body, and netlink attributes.

IfinfoMsg

Relates to a network interface. Used by the following message types

  • RTM_NEWLINK

  • RTM_DELLINK

  • RTM_GETLINK

Provides the following header field accessors

  • ifi_family

  • ifi_type

  • ifi_index

  • ifi_flags

  • ifi_change

Provides the following netlink attributes

  • address => STRING

  • broadcast => STRING

  • ifname => STRING

  • mtu => INT

  • qdisc => STRING

  • stats => HASH

  • txqlen => INT

  • operstate => INT

  • linkmode => INT

IfaddrMsg

Relates to an address present on an interface. Used by the following message types

  • RTM_NEWADDR

  • RTM_DELADDR

  • RTM_GETADDR

Provides the following header field accessors

  • ifa_family

  • ifa_prefixlen

  • ifa_flags

  • ifa_scope

  • ifa_index

Provides the following netlink attributes

  • address => STRING

  • local => STRING

  • label => STRING

  • broadcast => STRING

  • anycast => STRING

  • cacheinfo => HASH

$message->prefix

Sets or returns both the address netlink attribute, and the ifa_prefixlen header value, in the form

 address/ifa_prefixlen

RtMsg

Relates to a routing table entry. Used by the following message types

  • RTM_NEWROUTE

  • RTM_DELROUTE

  • RTM_GETROUTE

Provides the following header field accessors

  • rtm_family

  • rtm_dst_len

  • rtm_src_len

  • rtm_tos

  • rtm_table

  • rtm_protocol

  • rtm_scope

  • rtm_type

  • rtm_flags

Provides the following netlink attributes

  • dst => STRING

  • src => STRING

  • iif => INT

  • oif => INT

  • gateway => STRING

  • priority => INT

  • metrics => INT

$message->src

Sets or returns the src netlink attribute and the rtm_src_len header value, in the form

 address/prefixlen

if the address is defined, or undef if not.

$message->dst

Sets or returns the dst netlink attribute and the rtm_dst_len header value, in the form given above.

NdMsg

Relates to a neighbour discovery table entry. Used by the following message types

  • RTM_NEWNEIGH

  • RTM_DELNEIGH

  • RTM_GETNEIGH

Provides the following header field accessors

  • ndm_family

  • ndm_ifindex

  • ndm_state

  • ndm_flags

  • ndm_type

Provides the following netlink attributes

  • dst => STRING

  • lladdr => STRING

  • cacheinfo => HASH

SEE ALSO

  • Socket::Netlink::Route - interface to Linux's NETLINK_ROUTE netlink socket protocol

  • IO::Socket::Netlink - Object interface to AF_NETLINK domain sockets

  • rtnetlink(7) - rtnetlink, NETLINK_ROUTE - Linux IPv4 routing socket

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>