rtnetlink(7) Miscellaneous Information Manual rtnetlink(7) rtnetlink - #include #include #include #include rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE); Rtnetlink . . IP (queueing disciplines) NETLINK_ROUTE. netlink netlink(7) . rtnetlink : struct rtattr { unsigned short rta_len; /* */ unsigned short rta_type; /* */ /* */ }; RTA_* libnetlink rtnetlink(3). Rtnetlink ( netlink ): RTM_NEWLINK RTM_DELLINK RTM_GETLINK . ifinfomsg rtattr. struct ifinfomsg { unsigned char ifi_family; /* AF_UNSPEC */ unsigned short ifi_type; /* */ int ifi_index; /* */ unsigned int ifi_flags; /* */ unsigned int ifi_change; /* */ }; ifi_flags netdevice(7) ifi_index ( 3.7 RTM_NEWLINK ifindex ) ifi_change ifi_flags . rta_type --------------------------------------------------------------------------------------------------------------------------------------------- IFLA_UNSPEC - IFLA_ADDRESS (L2) IFLA_BROADCAST (L2) IFLA_IFNAME asciiz IFLA_MTU unsigned int (MTU) IFLA_LINK int IFLA_QDISC asciiz IFLA_STATS IFLA_PERM_ADDRESS ( 5.5) IFLA_STATS struct rtnl_link_stats ( 2.4 struct net_device_stats). RTM_NEWADDR RTM_DELADDR RTM_GETADDR IP . 2.2 IP (alias device) 2.0. 2.2 IPv4 IPv6. ifaddrmsg rtattr. struct ifaddrmsg { unsigned char ifa_family; /* */ unsigned char ifa_prefixlen; /* */ unsigned char ifa_flags; /* */ unsigned char ifa_scope; /* */ unsigned int ifa_index; /* */ }; ifa_family ( AF_INET AF_INET6) ifa_prefixlen ( IPv4) ifa_scope ifa_index . ifa_flags IFA_F_SECONDARY ( ) IFA_F_PERMANENT . rta_type ----------------------------------------------------------------------------------------------------------------------------------------------- IFA_UNSPEC - IFA_ADDRESS IFA_LOCAL IFA_LABEL asciiz IFA_BROADCAST IFA_ANYCAST (anycast) IFA_CACHEINFO struct ifa_cacheinfo struct ifa_cacheinfo { __u32 ifa_prefered; // __u32 ifa_valid; // __u32 cstamp; // __u32 tstamp; // }; ifa_valid ifa_prefered ifa_valid. UINT32_MAX . RTM_NEWROUTE RTM_DELROUTE RTM_GETROUTE . rtmsg rtattr. RTM_GETROUTE rtm_dst_len rtm_src_len 0 . rtm_table rtm_protocol 0 (wildcard). struct rtmsg { unsigned char rtm_family; /* */ unsigned char rtm_dst_len; /* */ unsigned char rtm_src_len; /* */ unsigned char rtm_tos; /* (TOS) */ unsigned char rtm_table; /* RTA_TABLE */ unsigned char rtm_protocol; /* */ unsigned char rtm_scope; /* */ unsigned char rtm_type; /* */ unsigned int rtm_flags; }; rtm_type ------------------------------------------------------------------------------------------------------------- RTN_UNSPEC RTN_UNICAST RTN_LOCAL RTN_BROADCAST ( ) RTN_ANYCAST ( /unicast) RTN_MULTICAST RTN_BLACKHOLE RTN_UNREACHABLE RTN_PROHIBIT RTN_THROW RTN_NAT RTN_XRESOLVE ( ) rtm_protocol -------------------------------------------------------- RTPROT_UNSPEC unknown RTPROT_REDIRECT ICMP ( ) RTPROT_KERNEL RTPROT_BOOT RTPROT_STATIC RTPROT_STATIC . . . rtm_scope : RT_SCOPE_UNIVERSE RT_SCOPE_SITE RT_SCOPE_LINK RT_SCOPE_HOST RT_SCOPE_NOWHERE RT_SCOPE_UNIVERSE RT_SCOPE_SITE . rtm_flags : RTM_F_NOTIFY rtnetlink RTM_F_CLONED RTM_F_EQUALIZE ( ) rtm_table RT_TABLE_UNSPEC RT_TABLE_DEFAULT RT_TABLE_MAIN RT_TABLE_LOCAL RT_TABLE_UNSPEC RT_TABLE_DEFAULT. rta_type ------------------------------------------------------------------------------------------------------------------------ RTA_UNSPEC - ignored RTA_DST RTA_SRC RTA_IIF int RTA_OIF int RTA_GATEWAY RTA_PRIORITY int RTA_PREFSRC RTA_METRICS ( ). RTA_MULTIPATH ( ). RTA_PROTOINFO RTA_FLOW int RTA_CACHEINFO struct rta_cacheinfo ( linux/rtnetlink.h) RTA_SESSION RTA_MP_ALGO RTA_TABLE int rtm_table RTA_MARK int RTA_MFC_STATS struct rta_mfc_stats ( linux/rtnetlink.h) RTA_VIA struct rtvia (AF) ( ) RTA_NEWDST RTA_PREF char IPv6 RFC4191 ( ) RTA_ENCAP_TYPE short (lwtunnels) ( ) RTA_ENCAP RTA_ENCAP_TYPE RTA_EXPIRES int IPv6 () RTA_METRICS struct rtattr : rta_type ---------------------------------------------------------------------------------------- RTAX_UNSPEC - RTAX_LOCK __u32 RTAX_* . RTAX_MTU __u32 . RTAX_WINDOW __u32 . RTAX_RTT __u32 . RTAX_RTTVAR __u32 . RTAX_SSTHRESH __u32 . RTAX_CWND __u32 . RTAX_ADVMSS __u32 . RTAX_REORDERING __u32 . RTAX_HOPLIMIT __u32 (TTL) . RTAX_INITCWND __u32 . RTAX_FEATURES __u32 . RTAX_RTO_MIN __u32 . RTAX_INITRWND __u32 . RTAX_QUICKACK __u32 (quick ack) . RTAX_CC_ALGO asciiz . RTAX_FASTOPEN_NO_COOKIE __u32 TCP (cookie). RTAX_LOCK ( sysctl setsockopt(2)). RTAX_RTO_MIN RTAX_LOCK. RTA_MULTIPATH struct rtnexthop RTAs (RTA_GATEWAY): struct rtnexthop { unsigned short rtnh_len; /* + RTAs */ unsigned char rtnh_flags; /* ( linux/rtnetlink.h) */ unsigned char rtnh_hops; /* */ int rtnh_ifindex; /* */ } RTNH_* RTA_* NLHDR_* . struct rtvia { unsigned short rtvia_family; unsigned char rtvia_addr[0]; }; rtvia_addr rtvia_family . RTA_PREF ICMPV6_ROUTER_PREF_LOW ICMPV6_ROUTER_PREF_MEDIUM ICMPV6_ROUTER_PREF_HIGH . RTA_ENCAP_TYPE LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_IP LWTUNNEL_ENCAP_ILA LWTUNNEL_ENCAP_IP6 . ! RTM_NEWNEIGH RTM_DELNEIGH RTM_GETNEIGH ( ARP) . ndmsg. struct ndmsg { unsigned char ndm_family; int ndm_ifindex; /* */ __u16 ndm_state; /* */ __u8 ndm_flags; /* */ __u8 ndm_type; }; struct nda_cacheinfo { __u32 ndm_confirmed; __u32 ndm_used; __u32 ndm_updated; __u32 ndm_refcnt; }; ndm_state : NUD_INCOMPLETE NUD_REACHABLE NUD_STALE NUD_DELAY NUD_PROBE NUD_FAILED NUD_NOARP NUD_PERMANENT ndm_flags : NTF_PROXY arp NTF_ROUTER IPv6 rtattr rta_type: NDA_UNSPEC NDA_DST NDA_LLADDR NDA_CACHEINFO rta_type NDA_CACHEINFO struct nda_cacheinfo. RTM_NEWRULE RTM_DELRULE RTM_GETRULE . struct rtmsg RTM_NEWQDISC RTM_DELQDISC RTM_GETQDISC (queueing discipline) . struct tcmsg . struct tcmsg { unsigned char tcm_family; int tcm_ifindex; /* */ __u32 tcm_handle; /* Qdisc */ __u32 tcm_parent; /* Qdisc */ __u32 tcm_info; }; rta_type -------------------------------------------------------------------------------------------------------------------------- TCA_UNSPEC - TCA_KIND asciiz TCA_OPTIONS Qdisc TCA_STATS struct tc_stats Qdisc TCA_XSTATS qdisc TCA_RATE struct tc_estimator qdisc. . RTM_NEWTCLASS RTM_DELTCLASS RTM_GETTCLASS . struct tcmsg . RTM_NEWTFILTER RTM_DELTFILTER RTM_GETTFILTER . struct tcmsg . rtnetlink 2.2. . cmsg(3) rtnetlink(3) ip(7) netlink(7) 3 . . : . 6.18 8 2026 rtnetlink(7)