aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_netlink_route.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-01-15 20:22:27 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-01-15 20:22:27 +0100
commit47501d0f3be031c9ef6121e48050b5d2d4d5a7f5 (patch)
tree9ab03f75bc1d34c3c37a0ae5b0f5f0126b8e0371 /sys/linux/socket_netlink_route.txt
parent837a69870d1419bf706dd6c12de82adcc0137030 (diff)
sys/linux: more NETLINK_ROUTE descriptions
Diffstat (limited to 'sys/linux/socket_netlink_route.txt')
-rw-r--r--sys/linux/socket_netlink_route.txt136
1 files changed, 128 insertions, 8 deletions
diff --git a/sys/linux/socket_netlink_route.txt b/sys/linux/socket_netlink_route.txt
index f20b33ef1..4a2d27f59 100644
--- a/sys/linux/socket_netlink_route.txt
+++ b/sys/linux/socket_netlink_route.txt
@@ -12,6 +12,7 @@ include <uapi/linux/netlink.h>
include <uapi/linux/netconf.h>
include <uapi/linux/rtnetlink.h>
include <uapi/linux/lwtunnel.h>
+include <uapi/linux/neighbour.h>
resource sock_nl_route[sock_netlink]
@@ -24,25 +25,49 @@ netlink_msg_route [
getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
+ getaddr netlink_msg[RTM_GETADDR, rtgenmsg[AF_UNSPEC], void]
+ getroute netlink_msg[RTM_GETROUTE, rtgenmsg[AF_UNSPEC], void]
+ getnetconf netlink_msg[RTM_GETNETCONF, rtgenmsg[AF_UNSPEC], void]
+ getstats netlink_msg[RTM_GETSTATS, rtgenmsg[AF_UNSPEC], void]
+ newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
+ delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
+ getneigh netlink_msg[RTM_GETNEIGH, rtgenmsg[AF_UNSPEC], void]
+ getneightbl netlink_msg[RTM_GETNEIGHTBL, rtgenmsg[AF_UNSPEC], void]
+ setneightbl netlink_msg[RTM_SETNEIGHTBL, ndtmsg, nl_neightbl_policy]
ipv4_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
- ipv4_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET], devconf_ip_policy]
ipv4_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[AF_INET], void]
-
- ipmr_newroute netlink_msg[RTM_NEWROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
- ipmr_delroute netlink_msg[RTM_DELROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
- ipmr_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[RTNL_FAMILY_IPMR], void]
+ ipv4_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET], devconf_ip_policy]
ipv6_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
+ ipv6_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
+ ipv6_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
+ ipv6_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_getmulticast netlink_msg[RTM_GETMULTICAST, rtgenmsg[AF_INET6], void]
ipv6_getanyicast netlink_msg[RTM_GETANYCAST, rtgenmsg[AF_INET6], void]
ipv6_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET6], devconf_ip_policy]
+
+ ipmr_newroute netlink_msg[RTM_NEWROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
+ ipmr_delroute netlink_msg[RTM_DELROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
+ ipmr_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[RTNL_FAMILY_IPMR], void]
+
+ mpls_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
+ mpls_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
+ mpls_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
+ mpls_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_MPLS], devconf_mpls_policy]
+
+ bridge_newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
+ bridge_delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
+ bridge_getneigh netlink_msg[RTM_GETNEIGH, ifinfomsg[AF_BRIDGE], ifla_policy]
+ bridge_getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
+ bridge_setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
+ bridge_dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
] [varlen]
type rtgenmsg[FAMILY] {
@@ -75,13 +100,29 @@ type rtmsg[FAMILY] {
rtm_dst_len flags[rtm_addr_len, int8]
rtmsrcdst_len flags[rtm_addr_len, int8]
rtm_tos int8
- rtm_table int8[0:4]
+ rtm_table flags[rt_table_types, int8]
rtm_protocol flags[rtm_protocol, int8]
rtm_scope flags[rt_scope_t, int8]
rtm_type flags[rtm_type, int8]
rtm_flags flags[rtm_flags, int32]
}
+ndmsg {
+ ndm_family flags[rtnl_af, int8]
+ ndm_pad1 const[0, int8]
+ ndm_pad2 const[0, int16]
+ ndm_ifindex ifindex
+ ndm_state flags[ndm_state, int16]
+ ndm_flags flags[ndm_flags, int8]
+ ndm_type flags[rtm_type, int8]
+}
+
+ndtmsg {
+ ndm_family flags[rtnl_af, int8]
+ ndm_pad1 const[0, int8]
+ ndm_pad2 const[0, int16]
+}
+
ifla_policy [
IFLA_IFNAME nlattr[IFLA_IFNAME, devname]
IFLA_ADDRESS nlattr[IFLA_ADDRESS, mac_addr]
@@ -151,7 +192,7 @@ rtm_ipv4_policy [
RTA_SRC nlattr[RTA_SRC, ipv4_addr]
RTA_IIF nlattr[RTA_DST, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
- RTA_GATEWAY nlattr[RTA_GATEWAY, int32]
+ RTA_GATEWAY nlattr[RTA_GATEWAY, ipv4_addr]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
RTA_PREFSRC nlattr[RTA_PREFSRC, ipv4_addr]
# TODO: what's this? is this interesting?
@@ -165,6 +206,78 @@ rtm_ipv4_policy [
RTA_MARK nlattr[RTA_MARK, int32]
] [varlen]
+rtm_ipv6_policy [
+ RTA_GATEWAY nlattr[RTA_GATEWAY, ipv6_addr]
+ RTA_IIF nlattr[RTA_DST, ifindex]
+ RTA_OIF nlattr[RTA_OIF, ifindex]
+ RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
+# TODO: what's this? is this interesting?
+ RTA_METRICS nlattr[RTA_METRICS, array[int8]]
+ RTA_MULTIPATH nlattr[RTA_MULTIPATH, array[rtnexthop]]
+ RTA_PREF nlattr[RTA_PREF, int8]
+ RTA_ENCAP_TYPE nlattr[RTA_ENCAP_TYPE, flags[lwtunnel_encap_types, int16]]
+# TODO: describe RTA_ENCAP
+ RTA_ENCAP nlattr[RTA_ENCAP, nl_generic_attr]
+ RTA_EXPIRES nlattr[RTA_MARK, int32]
+ RTA_UID nlattr[RTA_UID, uid]
+ RTA_MARK nlattr[RTA_MARK, int32]
+] [varlen]
+
+rtm_mpls_policy [
+ RTA_DST nlattr[RTA_DST, array[mpls_label]]
+ RTA_OIF nlattr[RTA_OIF, ifindex]
+ RTA_TTL_PROPAGATE nlattr[RTA_TTL_PROPAGATE, int8]
+] [varlen]
+
+nl_neightbl_policy [
+ NDTA_NAME nlattr[NDTA_NAME, string]
+ NDTA_THRESH1 nlattr[NDTA_THRESH1, int32]
+ NDTA_THRESH2 nlattr[NDTA_THRESH2, int32]
+ NDTA_THRESH3 nlattr[NDTA_THRESH3, int32]
+ NDTA_GC_INTERVAL nlattr[NDTA_GC_INTERVAL, int64]
+ NDTA_PARMS nlattr[NDTA_PARMS, array[nl_ntbl_parm_policy]]
+] [varlen]
+
+nl_ntbl_parm_policy [
+ NDTPA_IFINDEX nlattr[NDTPA_IFINDEX, ifindex]
+ NDTPA_QUEUE_LEN nlattr[NDTPA_QUEUE_LEN, int32]
+ NDTPA_PROXY_QLEN nlattr[NDTPA_PROXY_QLEN, int32]
+ NDTPA_APP_PROBES nlattr[NDTPA_APP_PROBES, int32]
+ NDTPA_UCAST_PROBES nlattr[NDTPA_UCAST_PROBES, int32]
+ NDTPA_MCAST_PROBES nlattr[NDTPA_MCAST_PROBES, int32]
+ NDTPA_MCAST_REPROBES nlattr[NDTPA_MCAST_REPROBES, int32]
+ NDTPA_BASE_REACHABLE_TIME nlattr[NDTPA_BASE_REACHABLE_TIME, int64]
+ NDTPA_GC_STALETIME nlattr[NDTPA_GC_STALETIME, int64]
+ NDTPA_DELAY_PROBE_TIME nlattr[NDTPA_DELAY_PROBE_TIME, int64]
+ NDTPA_RETRANS_TIME nlattr[NDTPA_RETRANS_TIME, int64]
+ NDTPA_ANYCAST_DELAY nlattr[NDTPA_ANYCAST_DELAY, int64]
+ NDTPA_PROXY_DELAY nlattr[NDTPA_PROXY_DELAY, int64]
+ NDTPA_LOCKTIME nlattr[NDTPA_LOCKTIME, int64]
+] [varlen]
+
+nd_policy [
+ NDA_DST_IPV4 nlattr[NDA_DST, ipv4_addr]
+ NDA_DST_IPV6 nlattr[NDA_DST, ipv6_addr]
+ NDA_DST_MAC nlattr[NDA_DST, mac_addr]
+ NDA_LLADDR nlattr[NDA_LLADDR, mac_addr]
+ NDA_CACHEINFO nlattr[NDA_CACHEINFO, nda_cacheinfo]
+ NDA_PROBES nlattr[NDA_PROBES, int32]
+ NDA_VLAN nlattr[NDA_VLAN, int16[0:4]]
+ NDA_PORT nlattr[NDA_PORT, sock_port]
+ NDA_VNI nlattr[NDA_VNI, int32]
+ NDA_IFINDEX nlattr[NDA_IFINDEX, ifindex]
+ NDA_MASTER nlattr[NDA_MASTER, int32]
+ NDA_LINK_NETNSID nlattr[NDA_LINK_NETNSID, int32]
+ NDA_SRC_VNI nlattr[NDA_SRC_VNI, int32]
+] [varlen]
+
+nda_cacheinfo {
+ ndm_confirmed int32
+ ndm_used int32
+ ndm_updated int32
+ ndm_refcnt int32
+}
+
rtnexthop {
rtnh_len int16
rtnh_flags int8
@@ -187,6 +300,11 @@ devconf_ip_policy [
IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
] [varlen]
+devconf_mpls_policy [
+ NETCONFA_IFINDEX nlattr[NETCONFA_IFINDEX, ifindex]
+ IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
+] [varlen]
+
# TODO: implement these
type ifla_vf_policy nl_generic_attr
type ifla_port_policy nl_generic_attr
@@ -207,7 +325,6 @@ rtnl_link_ifmap {
}
rtnl_af = AF_INET, AF_INET6, AF_BRIDGE, AF_MPLS
-
net_device_flags = IFF_UP, IFF_BROADCAST, IFF_DEBUG, IFF_LOOPBACK, IFF_POINTOPOINT, IFF_NOTRAILERS, IFF_RUNNING, IFF_NOARP, IFF_PROMISC, IFF_ALLMULTI, IFF_MASTER, IFF_SLAVE, IFF_MULTICAST, IFF_PORTSEL, IFF_AUTOMEDIA, IFF_DYNAMIC, IFF_LOWER_UP, IFF_DORMANT, IFF_ECHO
ifa_flags = IFA_F_SECONDARY, IFA_F_NODAD, IFA_F_OPTIMISTIC, IFA_F_DADFAILED, IFA_F_HOMEADDRESS, IFA_F_DEPRECATED, IFA_F_TENTATIVE, IFA_F_PERMANENT, IFA_F_MANAGETEMPADDR, IFA_F_NOPREFIXROUTE, IFA_F_MCAUTOJOIN
rt_scope_t = RT_SCOPE_UNIVERSE, RT_SCOPE_SITE, RT_SCOPE_LINK, RT_SCOPE_HOST, RT_SCOPE_NOWHERE
@@ -215,5 +332,8 @@ rtm_protocol = RTPROT_UNSPEC, RTPROT_REDIRECT, RTPROT_KERNEL, RTPROT_BOOT, RTPRO
rtm_type = RTN_UNSPEC, RTN_UNICAST, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST, RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_THROW, RTN_NAT, RTN_XRESOLVE
rtm_flags = RTM_F_NOTIFY, RTM_F_CLONED, RTM_F_EQUALIZE, RTM_F_PREFIX, RTM_F_LOOKUP_TABLE, RTM_F_FIB_MATCH
lwtunnel_encap_types = LWTUNNEL_ENCAP_NONE, LWTUNNEL_ENCAP_MPLS, LWTUNNEL_ENCAP_IP, LWTUNNEL_ENCAP_ILA, LWTUNNEL_ENCAP_IP6, LWTUNNEL_ENCAP_SEG6, LWTUNNEL_ENCAP_BPF, LWTUNNEL_ENCAP_SEG6_LOCAL
+rt_table_types = RT_TABLE_UNSPEC, RT_TABLE_COMPAT, RT_TABLE_DEFAULT, RT_TABLE_MAIN, RT_TABLE_LOCAL
+ndm_state = NUD_INCOMPLETE, NUD_REACHABLE, NUD_STALE, NUD_DELAY, NUD_PROBE, NUD_FAILED, NUD_NOARP, NUD_PERMANENT, NUD_NONE
+ndm_flags = NTF_USE, NTF_SELF, NTF_MASTER, NTF_PROXY, NTF_EXT_LEARNED, NTF_OFFLOADED, NTF_ROUTER
ifa_prefixlen = 0, 1, 8, 16, 24, 31, 32, 56, 63, 64, 128
rtm_addr_len = 0, 16, 20, 32, 128