IO::So...:Route(3pm)

πŸ“¦
version 0.05 Β· 2 versions
, in fedora 43

✨ NAME ✨

IO::Socket::Netlink::Route β€” an object interface to NETLINK_ROUTE netlink protocol sockets, bestie πŸ’–


🌸 DESCRIPTION 🌸

okay so basically this is a subclass of IO::Socket::Netlink, and it implements the NETLINK_ROUTE protocol. What does that even do? It lets you talk to the Linux kernel's networking stack β€” so you can query or modify interfaces, addresses, routes, and other networking properties. it's giving main character energy for real πŸ‘‘

ngl, this module is currently a work-in-progress and the docs are pretty minimal rn πŸ™ˆ the reader is expected to already be familiar with NETLINK_ROUTE, because all this does is give you a fairly minimal description of the Perl-level wrapping of the kernel-level concepts. For more info, go read the documentation in rtnetlink(7). periodt.


πŸŽ€ MESSAGE CLASSES πŸŽ€

Every message type falls into one of these subclasses, and which one you get is chosen by the value of the nlmsg_type field. Each subclass gives you access to the field headers of its message body, plus netlink attributes. slay.

πŸ¦‹ 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 it isn't. no in-between, bestie.

πŸ“ $message->dst

Sets or returns the dst netlink attribute and the rtm_dst_len header value, in the form given above. same vibe, different field ✨

🧚 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>


and that's the whole page, bestie 🫢 this was perl v5.42.0 from 2025-07-25, so go forth and talk to your kernel's networking stack, you absolute icon πŸ’–βœ¨πŸ’…

πŸ“¦ where this page comes from