122851890Sopenharmony_ci/****************************************************************************
222851890Sopenharmony_ci ****************************************************************************
322851890Sopenharmony_ci ***
422851890Sopenharmony_ci ***   This header was automatically generated from a Linux kernel header
522851890Sopenharmony_ci ***   of the same name, to make information necessary for userspace to
622851890Sopenharmony_ci ***   call into the kernel available to libc.  It contains only constants,
722851890Sopenharmony_ci ***   structures, and macros generated from the original header, and thus,
822851890Sopenharmony_ci ***   contains no copyrightable information.
922851890Sopenharmony_ci ***
1022851890Sopenharmony_ci ***   To edit the content of this header, modify the corresponding
1122851890Sopenharmony_ci ***   source file (e.g. under external/kernel-headers/original/) then
1222851890Sopenharmony_ci ***   run bionic/libc/kernel/tools/update_all.py
1322851890Sopenharmony_ci ***
1422851890Sopenharmony_ci ***   Any manual change here will be lost the next time this script will
1522851890Sopenharmony_ci ***   be run. You've been warned!
1622851890Sopenharmony_ci ***
1722851890Sopenharmony_ci ****************************************************************************
1822851890Sopenharmony_ci ****************************************************************************/
1922851890Sopenharmony_ci#ifndef _UAPI__LINUX_RTNETLINK_H
2022851890Sopenharmony_ci#define _UAPI__LINUX_RTNETLINK_H
2122851890Sopenharmony_ci#include <linux/types.h>
2222851890Sopenharmony_ci#include <linux/netlink.h>
2322851890Sopenharmony_ci#include <linux/if_link.h>
2422851890Sopenharmony_ci#include <linux/if_addr.h>
2522851890Sopenharmony_ci#include <linux/neighbour.h>
2622851890Sopenharmony_ci#define RTNL_FAMILY_IPMR 128
2722851890Sopenharmony_ci#define RTNL_FAMILY_IP6MR 129
2822851890Sopenharmony_ci#define RTNL_FAMILY_MAX 129
2922851890Sopenharmony_cienum {
3022851890Sopenharmony_ci  RTM_BASE = 16,
3122851890Sopenharmony_ci#define RTM_BASE RTM_BASE
3222851890Sopenharmony_ci  RTM_NEWLINK = 16,
3322851890Sopenharmony_ci#define RTM_NEWLINK RTM_NEWLINK
3422851890Sopenharmony_ci  RTM_DELLINK,
3522851890Sopenharmony_ci#define RTM_DELLINK RTM_DELLINK
3622851890Sopenharmony_ci  RTM_GETLINK,
3722851890Sopenharmony_ci#define RTM_GETLINK RTM_GETLINK
3822851890Sopenharmony_ci  RTM_SETLINK,
3922851890Sopenharmony_ci#define RTM_SETLINK RTM_SETLINK
4022851890Sopenharmony_ci  RTM_NEWADDR = 20,
4122851890Sopenharmony_ci#define RTM_NEWADDR RTM_NEWADDR
4222851890Sopenharmony_ci  RTM_DELADDR,
4322851890Sopenharmony_ci#define RTM_DELADDR RTM_DELADDR
4422851890Sopenharmony_ci  RTM_GETADDR,
4522851890Sopenharmony_ci#define RTM_GETADDR RTM_GETADDR
4622851890Sopenharmony_ci  RTM_NEWROUTE = 24,
4722851890Sopenharmony_ci#define RTM_NEWROUTE RTM_NEWROUTE
4822851890Sopenharmony_ci  RTM_DELROUTE,
4922851890Sopenharmony_ci#define RTM_DELROUTE RTM_DELROUTE
5022851890Sopenharmony_ci  RTM_GETROUTE,
5122851890Sopenharmony_ci#define RTM_GETROUTE RTM_GETROUTE
5222851890Sopenharmony_ci  RTM_NEWNEIGH = 28,
5322851890Sopenharmony_ci#define RTM_NEWNEIGH RTM_NEWNEIGH
5422851890Sopenharmony_ci  RTM_DELNEIGH,
5522851890Sopenharmony_ci#define RTM_DELNEIGH RTM_DELNEIGH
5622851890Sopenharmony_ci  RTM_GETNEIGH,
5722851890Sopenharmony_ci#define RTM_GETNEIGH RTM_GETNEIGH
5822851890Sopenharmony_ci  RTM_NEWRULE = 32,
5922851890Sopenharmony_ci#define RTM_NEWRULE RTM_NEWRULE
6022851890Sopenharmony_ci  RTM_DELRULE,
6122851890Sopenharmony_ci#define RTM_DELRULE RTM_DELRULE
6222851890Sopenharmony_ci  RTM_GETRULE,
6322851890Sopenharmony_ci#define RTM_GETRULE RTM_GETRULE
6422851890Sopenharmony_ci  RTM_NEWQDISC = 36,
6522851890Sopenharmony_ci#define RTM_NEWQDISC RTM_NEWQDISC
6622851890Sopenharmony_ci  RTM_DELQDISC,
6722851890Sopenharmony_ci#define RTM_DELQDISC RTM_DELQDISC
6822851890Sopenharmony_ci  RTM_GETQDISC,
6922851890Sopenharmony_ci#define RTM_GETQDISC RTM_GETQDISC
7022851890Sopenharmony_ci  RTM_NEWTCLASS = 40,
7122851890Sopenharmony_ci#define RTM_NEWTCLASS RTM_NEWTCLASS
7222851890Sopenharmony_ci  RTM_DELTCLASS,
7322851890Sopenharmony_ci#define RTM_DELTCLASS RTM_DELTCLASS
7422851890Sopenharmony_ci  RTM_GETTCLASS,
7522851890Sopenharmony_ci#define RTM_GETTCLASS RTM_GETTCLASS
7622851890Sopenharmony_ci  RTM_NEWTFILTER = 44,
7722851890Sopenharmony_ci#define RTM_NEWTFILTER RTM_NEWTFILTER
7822851890Sopenharmony_ci  RTM_DELTFILTER,
7922851890Sopenharmony_ci#define RTM_DELTFILTER RTM_DELTFILTER
8022851890Sopenharmony_ci  RTM_GETTFILTER,
8122851890Sopenharmony_ci#define RTM_GETTFILTER RTM_GETTFILTER
8222851890Sopenharmony_ci  RTM_NEWACTION = 48,
8322851890Sopenharmony_ci#define RTM_NEWACTION RTM_NEWACTION
8422851890Sopenharmony_ci  RTM_DELACTION,
8522851890Sopenharmony_ci#define RTM_DELACTION RTM_DELACTION
8622851890Sopenharmony_ci  RTM_GETACTION,
8722851890Sopenharmony_ci#define RTM_GETACTION RTM_GETACTION
8822851890Sopenharmony_ci  RTM_NEWPREFIX = 52,
8922851890Sopenharmony_ci#define RTM_NEWPREFIX RTM_NEWPREFIX
9022851890Sopenharmony_ci  RTM_GETMULTICAST = 58,
9122851890Sopenharmony_ci#define RTM_GETMULTICAST RTM_GETMULTICAST
9222851890Sopenharmony_ci  RTM_GETANYCAST = 62,
9322851890Sopenharmony_ci#define RTM_GETANYCAST RTM_GETANYCAST
9422851890Sopenharmony_ci  RTM_NEWNEIGHTBL = 64,
9522851890Sopenharmony_ci#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
9622851890Sopenharmony_ci  RTM_GETNEIGHTBL = 66,
9722851890Sopenharmony_ci#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
9822851890Sopenharmony_ci  RTM_SETNEIGHTBL,
9922851890Sopenharmony_ci#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
10022851890Sopenharmony_ci  RTM_NEWNDUSEROPT = 68,
10122851890Sopenharmony_ci#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
10222851890Sopenharmony_ci  RTM_NEWADDRLABEL = 72,
10322851890Sopenharmony_ci#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
10422851890Sopenharmony_ci  RTM_DELADDRLABEL,
10522851890Sopenharmony_ci#define RTM_DELADDRLABEL RTM_DELADDRLABEL
10622851890Sopenharmony_ci  RTM_GETADDRLABEL,
10722851890Sopenharmony_ci#define RTM_GETADDRLABEL RTM_GETADDRLABEL
10822851890Sopenharmony_ci  RTM_GETDCB = 78,
10922851890Sopenharmony_ci#define RTM_GETDCB RTM_GETDCB
11022851890Sopenharmony_ci  RTM_SETDCB,
11122851890Sopenharmony_ci#define RTM_SETDCB RTM_SETDCB
11222851890Sopenharmony_ci  RTM_NEWNETCONF = 80,
11322851890Sopenharmony_ci#define RTM_NEWNETCONF RTM_NEWNETCONF
11422851890Sopenharmony_ci  RTM_DELNETCONF,
11522851890Sopenharmony_ci#define RTM_DELNETCONF RTM_DELNETCONF
11622851890Sopenharmony_ci  RTM_GETNETCONF = 82,
11722851890Sopenharmony_ci#define RTM_GETNETCONF RTM_GETNETCONF
11822851890Sopenharmony_ci  RTM_NEWMDB = 84,
11922851890Sopenharmony_ci#define RTM_NEWMDB RTM_NEWMDB
12022851890Sopenharmony_ci  RTM_DELMDB = 85,
12122851890Sopenharmony_ci#define RTM_DELMDB RTM_DELMDB
12222851890Sopenharmony_ci  RTM_GETMDB = 86,
12322851890Sopenharmony_ci#define RTM_GETMDB RTM_GETMDB
12422851890Sopenharmony_ci  RTM_NEWNSID = 88,
12522851890Sopenharmony_ci#define RTM_NEWNSID RTM_NEWNSID
12622851890Sopenharmony_ci  RTM_DELNSID = 89,
12722851890Sopenharmony_ci#define RTM_DELNSID RTM_DELNSID
12822851890Sopenharmony_ci  RTM_GETNSID = 90,
12922851890Sopenharmony_ci#define RTM_GETNSID RTM_GETNSID
13022851890Sopenharmony_ci  RTM_NEWSTATS = 92,
13122851890Sopenharmony_ci#define RTM_NEWSTATS RTM_NEWSTATS
13222851890Sopenharmony_ci  RTM_GETSTATS = 94,
13322851890Sopenharmony_ci#define RTM_GETSTATS RTM_GETSTATS
13422851890Sopenharmony_ci  RTM_NEWCACHEREPORT = 96,
13522851890Sopenharmony_ci#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
13622851890Sopenharmony_ci  RTM_NEWCHAIN = 100,
13722851890Sopenharmony_ci#define RTM_NEWCHAIN RTM_NEWCHAIN
13822851890Sopenharmony_ci  RTM_DELCHAIN,
13922851890Sopenharmony_ci#define RTM_DELCHAIN RTM_DELCHAIN
14022851890Sopenharmony_ci  RTM_GETCHAIN,
14122851890Sopenharmony_ci#define RTM_GETCHAIN RTM_GETCHAIN
14222851890Sopenharmony_ci  RTM_NEWNEXTHOP = 104,
14322851890Sopenharmony_ci#define RTM_NEWNEXTHOP RTM_NEWNEXTHOP
14422851890Sopenharmony_ci  RTM_DELNEXTHOP,
14522851890Sopenharmony_ci#define RTM_DELNEXTHOP RTM_DELNEXTHOP
14622851890Sopenharmony_ci  RTM_GETNEXTHOP,
14722851890Sopenharmony_ci#define RTM_GETNEXTHOP RTM_GETNEXTHOP
14822851890Sopenharmony_ci  RTM_NEWLINKPROP = 108,
14922851890Sopenharmony_ci#define RTM_NEWLINKPROP RTM_NEWLINKPROP
15022851890Sopenharmony_ci  RTM_DELLINKPROP,
15122851890Sopenharmony_ci#define RTM_DELLINKPROP RTM_DELLINKPROP
15222851890Sopenharmony_ci  RTM_GETLINKPROP,
15322851890Sopenharmony_ci#define RTM_GETLINKPROP RTM_GETLINKPROP
15422851890Sopenharmony_ci  RTM_NEWVLAN = 112,
15522851890Sopenharmony_ci#define RTM_NEWNVLAN RTM_NEWVLAN
15622851890Sopenharmony_ci  RTM_DELVLAN,
15722851890Sopenharmony_ci#define RTM_DELVLAN RTM_DELVLAN
15822851890Sopenharmony_ci  RTM_GETVLAN,
15922851890Sopenharmony_ci#define RTM_GETVLAN RTM_GETVLAN
16022851890Sopenharmony_ci  __RTM_MAX,
16122851890Sopenharmony_ci#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
16222851890Sopenharmony_ci};
16322851890Sopenharmony_ci#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
16422851890Sopenharmony_ci#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
16522851890Sopenharmony_ci#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
16622851890Sopenharmony_cistruct rtattr {
16722851890Sopenharmony_ci  unsigned short rta_len;
16822851890Sopenharmony_ci  unsigned short rta_type;
16922851890Sopenharmony_ci};
17022851890Sopenharmony_ci#define RTA_ALIGNTO 4U
17122851890Sopenharmony_ci#define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
17222851890Sopenharmony_ci#define RTA_OK(rta,len) ((len) >= (int) sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
17322851890Sopenharmony_ci#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr *) (((char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
17422851890Sopenharmony_ci#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
17522851890Sopenharmony_ci#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
17622851890Sopenharmony_ci#define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
17722851890Sopenharmony_ci#define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
17822851890Sopenharmony_cistruct rtmsg {
17922851890Sopenharmony_ci  unsigned char rtm_family;
18022851890Sopenharmony_ci  unsigned char rtm_dst_len;
18122851890Sopenharmony_ci  unsigned char rtm_src_len;
18222851890Sopenharmony_ci  unsigned char rtm_tos;
18322851890Sopenharmony_ci  unsigned char rtm_table;
18422851890Sopenharmony_ci  unsigned char rtm_protocol;
18522851890Sopenharmony_ci  unsigned char rtm_scope;
18622851890Sopenharmony_ci  unsigned char rtm_type;
18722851890Sopenharmony_ci  unsigned rtm_flags;
18822851890Sopenharmony_ci};
18922851890Sopenharmony_cienum {
19022851890Sopenharmony_ci  RTN_UNSPEC,
19122851890Sopenharmony_ci  RTN_UNICAST,
19222851890Sopenharmony_ci  RTN_LOCAL,
19322851890Sopenharmony_ci  RTN_BROADCAST,
19422851890Sopenharmony_ci  RTN_ANYCAST,
19522851890Sopenharmony_ci  RTN_MULTICAST,
19622851890Sopenharmony_ci  RTN_BLACKHOLE,
19722851890Sopenharmony_ci  RTN_UNREACHABLE,
19822851890Sopenharmony_ci  RTN_PROHIBIT,
19922851890Sopenharmony_ci  RTN_THROW,
20022851890Sopenharmony_ci  RTN_NAT,
20122851890Sopenharmony_ci  RTN_XRESOLVE,
20222851890Sopenharmony_ci  __RTN_MAX
20322851890Sopenharmony_ci};
20422851890Sopenharmony_ci#define RTN_MAX (__RTN_MAX - 1)
20522851890Sopenharmony_ci#define RTPROT_UNSPEC 0
20622851890Sopenharmony_ci#define RTPROT_REDIRECT 1
20722851890Sopenharmony_ci#define RTPROT_KERNEL 2
20822851890Sopenharmony_ci#define RTPROT_BOOT 3
20922851890Sopenharmony_ci#define RTPROT_STATIC 4
21022851890Sopenharmony_ci#define RTPROT_GATED 8
21122851890Sopenharmony_ci#define RTPROT_RA 9
21222851890Sopenharmony_ci#define RTPROT_MRT 10
21322851890Sopenharmony_ci#define RTPROT_ZEBRA 11
21422851890Sopenharmony_ci#define RTPROT_BIRD 12
21522851890Sopenharmony_ci#define RTPROT_DNROUTED 13
21622851890Sopenharmony_ci#define RTPROT_XORP 14
21722851890Sopenharmony_ci#define RTPROT_NTK 15
21822851890Sopenharmony_ci#define RTPROT_DHCP 16
21922851890Sopenharmony_ci#define RTPROT_MROUTED 17
22022851890Sopenharmony_ci#define RTPROT_KEEPALIVED 18
22122851890Sopenharmony_ci#define RTPROT_BABEL 42
22222851890Sopenharmony_ci#define RTPROT_BGP 186
22322851890Sopenharmony_ci#define RTPROT_ISIS 187
22422851890Sopenharmony_ci#define RTPROT_OSPF 188
22522851890Sopenharmony_ci#define RTPROT_RIP 189
22622851890Sopenharmony_ci#define RTPROT_EIGRP 192
22722851890Sopenharmony_cienum rt_scope_t {
22822851890Sopenharmony_ci  RT_SCOPE_UNIVERSE = 0,
22922851890Sopenharmony_ci  RT_SCOPE_SITE = 200,
23022851890Sopenharmony_ci  RT_SCOPE_LINK = 253,
23122851890Sopenharmony_ci  RT_SCOPE_HOST = 254,
23222851890Sopenharmony_ci  RT_SCOPE_NOWHERE = 255
23322851890Sopenharmony_ci};
23422851890Sopenharmony_ci#define RTM_F_NOTIFY 0x100
23522851890Sopenharmony_ci#define RTM_F_CLONED 0x200
23622851890Sopenharmony_ci#define RTM_F_EQUALIZE 0x400
23722851890Sopenharmony_ci#define RTM_F_PREFIX 0x800
23822851890Sopenharmony_ci#define RTM_F_LOOKUP_TABLE 0x1000
23922851890Sopenharmony_ci#define RTM_F_FIB_MATCH 0x2000
24022851890Sopenharmony_ci#define RTM_F_OFFLOAD 0x4000
24122851890Sopenharmony_ci#define RTM_F_TRAP 0x8000
24222851890Sopenharmony_cienum rt_class_t {
24322851890Sopenharmony_ci  RT_TABLE_UNSPEC = 0,
24422851890Sopenharmony_ci  RT_TABLE_COMPAT = 252,
24522851890Sopenharmony_ci  RT_TABLE_DEFAULT = 253,
24622851890Sopenharmony_ci  RT_TABLE_MAIN = 254,
24722851890Sopenharmony_ci  RT_TABLE_LOCAL = 255,
24822851890Sopenharmony_ci  RT_TABLE_MAX = 0xFFFFFFFF
24922851890Sopenharmony_ci};
25022851890Sopenharmony_cienum rtattr_type_t {
25122851890Sopenharmony_ci  RTA_UNSPEC,
25222851890Sopenharmony_ci  RTA_DST,
25322851890Sopenharmony_ci  RTA_SRC,
25422851890Sopenharmony_ci  RTA_IIF,
25522851890Sopenharmony_ci  RTA_OIF,
25622851890Sopenharmony_ci  RTA_GATEWAY,
25722851890Sopenharmony_ci  RTA_PRIORITY,
25822851890Sopenharmony_ci  RTA_PREFSRC,
25922851890Sopenharmony_ci  RTA_METRICS,
26022851890Sopenharmony_ci  RTA_MULTIPATH,
26122851890Sopenharmony_ci  RTA_PROTOINFO,
26222851890Sopenharmony_ci  RTA_FLOW,
26322851890Sopenharmony_ci  RTA_CACHEINFO,
26422851890Sopenharmony_ci  RTA_SESSION,
26522851890Sopenharmony_ci  RTA_MP_ALGO,
26622851890Sopenharmony_ci  RTA_TABLE,
26722851890Sopenharmony_ci  RTA_MARK,
26822851890Sopenharmony_ci  RTA_MFC_STATS,
26922851890Sopenharmony_ci  RTA_VIA,
27022851890Sopenharmony_ci  RTA_NEWDST,
27122851890Sopenharmony_ci  RTA_PREF,
27222851890Sopenharmony_ci  RTA_ENCAP_TYPE,
27322851890Sopenharmony_ci  RTA_ENCAP,
27422851890Sopenharmony_ci  RTA_EXPIRES,
27522851890Sopenharmony_ci  RTA_PAD,
27622851890Sopenharmony_ci  RTA_UID,
27722851890Sopenharmony_ci  RTA_TTL_PROPAGATE,
27822851890Sopenharmony_ci  RTA_IP_PROTO,
27922851890Sopenharmony_ci  RTA_SPORT,
28022851890Sopenharmony_ci  RTA_DPORT,
28122851890Sopenharmony_ci  RTA_NH_ID,
28222851890Sopenharmony_ci  __RTA_MAX
28322851890Sopenharmony_ci};
28422851890Sopenharmony_ci#define RTA_MAX (__RTA_MAX - 1)
28522851890Sopenharmony_ci#define RTM_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
28622851890Sopenharmony_ci#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg))
28722851890Sopenharmony_cistruct rtnexthop {
28822851890Sopenharmony_ci  unsigned short rtnh_len;
28922851890Sopenharmony_ci  unsigned char rtnh_flags;
29022851890Sopenharmony_ci  unsigned char rtnh_hops;
29122851890Sopenharmony_ci  int rtnh_ifindex;
29222851890Sopenharmony_ci};
29322851890Sopenharmony_ci#define RTNH_F_DEAD 1
29422851890Sopenharmony_ci#define RTNH_F_PERVASIVE 2
29522851890Sopenharmony_ci#define RTNH_F_ONLINK 4
29622851890Sopenharmony_ci#define RTNH_F_OFFLOAD 8
29722851890Sopenharmony_ci#define RTNH_F_LINKDOWN 16
29822851890Sopenharmony_ci#define RTNH_F_UNRESOLVED 32
29922851890Sopenharmony_ci#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
30022851890Sopenharmony_ci#define RTNH_ALIGNTO 4
30122851890Sopenharmony_ci#define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
30222851890Sopenharmony_ci#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
30322851890Sopenharmony_ci#define RTNH_NEXT(rtnh) ((struct rtnexthop *) (((char *) (rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
30422851890Sopenharmony_ci#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
30522851890Sopenharmony_ci#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
30622851890Sopenharmony_ci#define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
30722851890Sopenharmony_cistruct rtvia {
30822851890Sopenharmony_ci  __kernel_sa_family_t rtvia_family;
30922851890Sopenharmony_ci  __u8 rtvia_addr[0];
31022851890Sopenharmony_ci};
31122851890Sopenharmony_cistruct rta_cacheinfo {
31222851890Sopenharmony_ci  __u32 rta_clntref;
31322851890Sopenharmony_ci  __u32 rta_lastuse;
31422851890Sopenharmony_ci  __s32 rta_expires;
31522851890Sopenharmony_ci  __u32 rta_error;
31622851890Sopenharmony_ci  __u32 rta_used;
31722851890Sopenharmony_ci#define RTNETLINK_HAVE_PEERINFO 1
31822851890Sopenharmony_ci  __u32 rta_id;
31922851890Sopenharmony_ci  __u32 rta_ts;
32022851890Sopenharmony_ci  __u32 rta_tsage;
32122851890Sopenharmony_ci};
32222851890Sopenharmony_cienum {
32322851890Sopenharmony_ci  RTAX_UNSPEC,
32422851890Sopenharmony_ci#define RTAX_UNSPEC RTAX_UNSPEC
32522851890Sopenharmony_ci  RTAX_LOCK,
32622851890Sopenharmony_ci#define RTAX_LOCK RTAX_LOCK
32722851890Sopenharmony_ci  RTAX_MTU,
32822851890Sopenharmony_ci#define RTAX_MTU RTAX_MTU
32922851890Sopenharmony_ci  RTAX_WINDOW,
33022851890Sopenharmony_ci#define RTAX_WINDOW RTAX_WINDOW
33122851890Sopenharmony_ci  RTAX_RTT,
33222851890Sopenharmony_ci#define RTAX_RTT RTAX_RTT
33322851890Sopenharmony_ci  RTAX_RTTVAR,
33422851890Sopenharmony_ci#define RTAX_RTTVAR RTAX_RTTVAR
33522851890Sopenharmony_ci  RTAX_SSTHRESH,
33622851890Sopenharmony_ci#define RTAX_SSTHRESH RTAX_SSTHRESH
33722851890Sopenharmony_ci  RTAX_CWND,
33822851890Sopenharmony_ci#define RTAX_CWND RTAX_CWND
33922851890Sopenharmony_ci  RTAX_ADVMSS,
34022851890Sopenharmony_ci#define RTAX_ADVMSS RTAX_ADVMSS
34122851890Sopenharmony_ci  RTAX_REORDERING,
34222851890Sopenharmony_ci#define RTAX_REORDERING RTAX_REORDERING
34322851890Sopenharmony_ci  RTAX_HOPLIMIT,
34422851890Sopenharmony_ci#define RTAX_HOPLIMIT RTAX_HOPLIMIT
34522851890Sopenharmony_ci  RTAX_INITCWND,
34622851890Sopenharmony_ci#define RTAX_INITCWND RTAX_INITCWND
34722851890Sopenharmony_ci  RTAX_FEATURES,
34822851890Sopenharmony_ci#define RTAX_FEATURES RTAX_FEATURES
34922851890Sopenharmony_ci  RTAX_RTO_MIN,
35022851890Sopenharmony_ci#define RTAX_RTO_MIN RTAX_RTO_MIN
35122851890Sopenharmony_ci  RTAX_INITRWND,
35222851890Sopenharmony_ci#define RTAX_INITRWND RTAX_INITRWND
35322851890Sopenharmony_ci  RTAX_QUICKACK,
35422851890Sopenharmony_ci#define RTAX_QUICKACK RTAX_QUICKACK
35522851890Sopenharmony_ci  RTAX_CC_ALGO,
35622851890Sopenharmony_ci#define RTAX_CC_ALGO RTAX_CC_ALGO
35722851890Sopenharmony_ci  RTAX_FASTOPEN_NO_COOKIE,
35822851890Sopenharmony_ci#define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
35922851890Sopenharmony_ci  __RTAX_MAX
36022851890Sopenharmony_ci};
36122851890Sopenharmony_ci#define RTAX_MAX (__RTAX_MAX - 1)
36222851890Sopenharmony_ci#define RTAX_FEATURE_ECN (1 << 0)
36322851890Sopenharmony_ci#define RTAX_FEATURE_SACK (1 << 1)
36422851890Sopenharmony_ci#define RTAX_FEATURE_TIMESTAMP (1 << 2)
36522851890Sopenharmony_ci#define RTAX_FEATURE_ALLFRAG (1 << 3)
36622851890Sopenharmony_ci#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
36722851890Sopenharmony_cistruct rta_session {
36822851890Sopenharmony_ci  __u8 proto;
36922851890Sopenharmony_ci  __u8 pad1;
37022851890Sopenharmony_ci  __u16 pad2;
37122851890Sopenharmony_ci  union {
37222851890Sopenharmony_ci    struct {
37322851890Sopenharmony_ci      __u16 sport;
37422851890Sopenharmony_ci      __u16 dport;
37522851890Sopenharmony_ci    } ports;
37622851890Sopenharmony_ci    struct {
37722851890Sopenharmony_ci      __u8 type;
37822851890Sopenharmony_ci      __u8 code;
37922851890Sopenharmony_ci      __u16 ident;
38022851890Sopenharmony_ci    } icmpt;
38122851890Sopenharmony_ci    __u32 spi;
38222851890Sopenharmony_ci  } u;
38322851890Sopenharmony_ci};
38422851890Sopenharmony_cistruct rta_mfc_stats {
38522851890Sopenharmony_ci  __u64 mfcs_packets;
38622851890Sopenharmony_ci  __u64 mfcs_bytes;
38722851890Sopenharmony_ci  __u64 mfcs_wrong_if;
38822851890Sopenharmony_ci};
38922851890Sopenharmony_cistruct rtgenmsg {
39022851890Sopenharmony_ci  unsigned char rtgen_family;
39122851890Sopenharmony_ci};
39222851890Sopenharmony_cistruct ifinfomsg {
39322851890Sopenharmony_ci  unsigned char ifi_family;
39422851890Sopenharmony_ci  unsigned char __ifi_pad;
39522851890Sopenharmony_ci  unsigned short ifi_type;
39622851890Sopenharmony_ci  int ifi_index;
39722851890Sopenharmony_ci  unsigned ifi_flags;
39822851890Sopenharmony_ci  unsigned ifi_change;
39922851890Sopenharmony_ci};
40022851890Sopenharmony_cistruct prefixmsg {
40122851890Sopenharmony_ci  unsigned char prefix_family;
40222851890Sopenharmony_ci  unsigned char prefix_pad1;
40322851890Sopenharmony_ci  unsigned short prefix_pad2;
40422851890Sopenharmony_ci  int prefix_ifindex;
40522851890Sopenharmony_ci  unsigned char prefix_type;
40622851890Sopenharmony_ci  unsigned char prefix_len;
40722851890Sopenharmony_ci  unsigned char prefix_flags;
40822851890Sopenharmony_ci  unsigned char prefix_pad3;
40922851890Sopenharmony_ci};
41022851890Sopenharmony_cienum {
41122851890Sopenharmony_ci  PREFIX_UNSPEC,
41222851890Sopenharmony_ci  PREFIX_ADDRESS,
41322851890Sopenharmony_ci  PREFIX_CACHEINFO,
41422851890Sopenharmony_ci  __PREFIX_MAX
41522851890Sopenharmony_ci};
41622851890Sopenharmony_ci#define PREFIX_MAX (__PREFIX_MAX - 1)
41722851890Sopenharmony_cistruct prefix_cacheinfo {
41822851890Sopenharmony_ci  __u32 preferred_time;
41922851890Sopenharmony_ci  __u32 valid_time;
42022851890Sopenharmony_ci};
42122851890Sopenharmony_cistruct tcmsg {
42222851890Sopenharmony_ci  unsigned char tcm_family;
42322851890Sopenharmony_ci  unsigned char tcm__pad1;
42422851890Sopenharmony_ci  unsigned short tcm__pad2;
42522851890Sopenharmony_ci  int tcm_ifindex;
42622851890Sopenharmony_ci  __u32 tcm_handle;
42722851890Sopenharmony_ci  __u32 tcm_parent;
42822851890Sopenharmony_ci#define tcm_block_index tcm_parent
42922851890Sopenharmony_ci  __u32 tcm_info;
43022851890Sopenharmony_ci};
43122851890Sopenharmony_ci#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
43222851890Sopenharmony_cienum {
43322851890Sopenharmony_ci  TCA_UNSPEC,
43422851890Sopenharmony_ci  TCA_KIND,
43522851890Sopenharmony_ci  TCA_OPTIONS,
43622851890Sopenharmony_ci  TCA_STATS,
43722851890Sopenharmony_ci  TCA_XSTATS,
43822851890Sopenharmony_ci  TCA_RATE,
43922851890Sopenharmony_ci  TCA_FCNT,
44022851890Sopenharmony_ci  TCA_STATS2,
44122851890Sopenharmony_ci  TCA_STAB,
44222851890Sopenharmony_ci  TCA_PAD,
44322851890Sopenharmony_ci  TCA_DUMP_INVISIBLE,
44422851890Sopenharmony_ci  TCA_CHAIN,
44522851890Sopenharmony_ci  TCA_HW_OFFLOAD,
44622851890Sopenharmony_ci  TCA_INGRESS_BLOCK,
44722851890Sopenharmony_ci  TCA_EGRESS_BLOCK,
44822851890Sopenharmony_ci  TCA_DUMP_FLAGS,
44922851890Sopenharmony_ci  __TCA_MAX
45022851890Sopenharmony_ci};
45122851890Sopenharmony_ci#define TCA_MAX (__TCA_MAX - 1)
45222851890Sopenharmony_ci#define TCA_DUMP_FLAGS_TERSE (1 << 0)
45322851890Sopenharmony_ci#define TCA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
45422851890Sopenharmony_ci#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcmsg))
45522851890Sopenharmony_cistruct nduseroptmsg {
45622851890Sopenharmony_ci  unsigned char nduseropt_family;
45722851890Sopenharmony_ci  unsigned char nduseropt_pad1;
45822851890Sopenharmony_ci  unsigned short nduseropt_opts_len;
45922851890Sopenharmony_ci  int nduseropt_ifindex;
46022851890Sopenharmony_ci  __u8 nduseropt_icmp_type;
46122851890Sopenharmony_ci  __u8 nduseropt_icmp_code;
46222851890Sopenharmony_ci  unsigned short nduseropt_pad2;
46322851890Sopenharmony_ci  unsigned int nduseropt_pad3;
46422851890Sopenharmony_ci};
46522851890Sopenharmony_cienum {
46622851890Sopenharmony_ci  NDUSEROPT_UNSPEC,
46722851890Sopenharmony_ci  NDUSEROPT_SRCADDR,
46822851890Sopenharmony_ci  __NDUSEROPT_MAX
46922851890Sopenharmony_ci};
47022851890Sopenharmony_ci#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
47122851890Sopenharmony_ci#define RTMGRP_LINK 1
47222851890Sopenharmony_ci#define RTMGRP_NOTIFY 2
47322851890Sopenharmony_ci#define RTMGRP_NEIGH 4
47422851890Sopenharmony_ci#define RTMGRP_TC 8
47522851890Sopenharmony_ci#define RTMGRP_IPV4_IFADDR 0x10
47622851890Sopenharmony_ci#define RTMGRP_IPV4_MROUTE 0x20
47722851890Sopenharmony_ci#define RTMGRP_IPV4_ROUTE 0x40
47822851890Sopenharmony_ci#define RTMGRP_IPV4_RULE 0x80
47922851890Sopenharmony_ci#define RTMGRP_IPV6_IFADDR 0x100
48022851890Sopenharmony_ci#define RTMGRP_IPV6_MROUTE 0x200
48122851890Sopenharmony_ci#define RTMGRP_IPV6_ROUTE 0x400
48222851890Sopenharmony_ci#define RTMGRP_IPV6_IFINFO 0x800
48322851890Sopenharmony_ci#define RTMGRP_DECnet_IFADDR 0x1000
48422851890Sopenharmony_ci#define RTMGRP_DECnet_ROUTE 0x4000
48522851890Sopenharmony_ci#define RTMGRP_IPV6_PREFIX 0x20000
48622851890Sopenharmony_cienum rtnetlink_groups {
48722851890Sopenharmony_ci  RTNLGRP_NONE,
48822851890Sopenharmony_ci#define RTNLGRP_NONE RTNLGRP_NONE
48922851890Sopenharmony_ci  RTNLGRP_LINK,
49022851890Sopenharmony_ci#define RTNLGRP_LINK RTNLGRP_LINK
49122851890Sopenharmony_ci  RTNLGRP_NOTIFY,
49222851890Sopenharmony_ci#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
49322851890Sopenharmony_ci  RTNLGRP_NEIGH,
49422851890Sopenharmony_ci#define RTNLGRP_NEIGH RTNLGRP_NEIGH
49522851890Sopenharmony_ci  RTNLGRP_TC,
49622851890Sopenharmony_ci#define RTNLGRP_TC RTNLGRP_TC
49722851890Sopenharmony_ci  RTNLGRP_IPV4_IFADDR,
49822851890Sopenharmony_ci#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
49922851890Sopenharmony_ci  RTNLGRP_IPV4_MROUTE,
50022851890Sopenharmony_ci#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
50122851890Sopenharmony_ci  RTNLGRP_IPV4_ROUTE,
50222851890Sopenharmony_ci#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
50322851890Sopenharmony_ci  RTNLGRP_IPV4_RULE,
50422851890Sopenharmony_ci#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
50522851890Sopenharmony_ci  RTNLGRP_IPV6_IFADDR,
50622851890Sopenharmony_ci#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
50722851890Sopenharmony_ci  RTNLGRP_IPV6_MROUTE,
50822851890Sopenharmony_ci#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
50922851890Sopenharmony_ci  RTNLGRP_IPV6_ROUTE,
51022851890Sopenharmony_ci#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
51122851890Sopenharmony_ci  RTNLGRP_IPV6_IFINFO,
51222851890Sopenharmony_ci#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
51322851890Sopenharmony_ci  RTNLGRP_DECnet_IFADDR,
51422851890Sopenharmony_ci#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
51522851890Sopenharmony_ci  RTNLGRP_NOP2,
51622851890Sopenharmony_ci  RTNLGRP_DECnet_ROUTE,
51722851890Sopenharmony_ci#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
51822851890Sopenharmony_ci  RTNLGRP_DECnet_RULE,
51922851890Sopenharmony_ci#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
52022851890Sopenharmony_ci  RTNLGRP_NOP4,
52122851890Sopenharmony_ci  RTNLGRP_IPV6_PREFIX,
52222851890Sopenharmony_ci#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
52322851890Sopenharmony_ci  RTNLGRP_IPV6_RULE,
52422851890Sopenharmony_ci#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
52522851890Sopenharmony_ci  RTNLGRP_ND_USEROPT,
52622851890Sopenharmony_ci#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
52722851890Sopenharmony_ci  RTNLGRP_PHONET_IFADDR,
52822851890Sopenharmony_ci#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
52922851890Sopenharmony_ci  RTNLGRP_PHONET_ROUTE,
53022851890Sopenharmony_ci#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
53122851890Sopenharmony_ci  RTNLGRP_DCB,
53222851890Sopenharmony_ci#define RTNLGRP_DCB RTNLGRP_DCB
53322851890Sopenharmony_ci  RTNLGRP_IPV4_NETCONF,
53422851890Sopenharmony_ci#define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
53522851890Sopenharmony_ci  RTNLGRP_IPV6_NETCONF,
53622851890Sopenharmony_ci#define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
53722851890Sopenharmony_ci  RTNLGRP_MDB,
53822851890Sopenharmony_ci#define RTNLGRP_MDB RTNLGRP_MDB
53922851890Sopenharmony_ci  RTNLGRP_MPLS_ROUTE,
54022851890Sopenharmony_ci#define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
54122851890Sopenharmony_ci  RTNLGRP_NSID,
54222851890Sopenharmony_ci#define RTNLGRP_NSID RTNLGRP_NSID
54322851890Sopenharmony_ci  RTNLGRP_MPLS_NETCONF,
54422851890Sopenharmony_ci#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
54522851890Sopenharmony_ci  RTNLGRP_IPV4_MROUTE_R,
54622851890Sopenharmony_ci#define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
54722851890Sopenharmony_ci  RTNLGRP_IPV6_MROUTE_R,
54822851890Sopenharmony_ci#define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
54922851890Sopenharmony_ci  RTNLGRP_NEXTHOP,
55022851890Sopenharmony_ci#define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP
55122851890Sopenharmony_ci  RTNLGRP_BRVLAN,
55222851890Sopenharmony_ci#define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
55322851890Sopenharmony_ci  __RTNLGRP_MAX
55422851890Sopenharmony_ci};
55522851890Sopenharmony_ci#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
55622851890Sopenharmony_cistruct tcamsg {
55722851890Sopenharmony_ci  unsigned char tca_family;
55822851890Sopenharmony_ci  unsigned char tca__pad1;
55922851890Sopenharmony_ci  unsigned short tca__pad2;
56022851890Sopenharmony_ci};
56122851890Sopenharmony_cienum {
56222851890Sopenharmony_ci  TCA_ROOT_UNSPEC,
56322851890Sopenharmony_ci  TCA_ROOT_TAB,
56422851890Sopenharmony_ci#define TCA_ACT_TAB TCA_ROOT_TAB
56522851890Sopenharmony_ci#define TCAA_MAX TCA_ROOT_TAB
56622851890Sopenharmony_ci  TCA_ROOT_FLAGS,
56722851890Sopenharmony_ci  TCA_ROOT_COUNT,
56822851890Sopenharmony_ci  TCA_ROOT_TIME_DELTA,
56922851890Sopenharmony_ci  __TCA_ROOT_MAX,
57022851890Sopenharmony_ci#define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
57122851890Sopenharmony_ci};
57222851890Sopenharmony_ci#define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
57322851890Sopenharmony_ci#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
57422851890Sopenharmony_ci#define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
57522851890Sopenharmony_ci#define RTEXT_FILTER_VF (1 << 0)
57622851890Sopenharmony_ci#define RTEXT_FILTER_BRVLAN (1 << 1)
57722851890Sopenharmony_ci#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
57822851890Sopenharmony_ci#define RTEXT_FILTER_SKIP_STATS (1 << 3)
57922851890Sopenharmony_ci#define RTEXT_FILTER_MRP (1 << 4)
58022851890Sopenharmony_ci#endif
581