From 73b86ee458d6d6b2d9d10ce3b285a7389f12d082 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 12 Nov 2019 13:27:19 -0600 Subject: [PATCH] include/netpacket/netlink.h: General clean-up and re-organization. --- include/netpacket/netlink.h | 234 ++++++++++++++++++------------------ 1 file changed, 119 insertions(+), 115 deletions(-) diff --git a/include/netpacket/netlink.h b/include/netpacket/netlink.h index ad93f5bb83..37e5eb0d3f 100644 --- a/include/netpacket/netlink.h +++ b/include/netpacket/netlink.h @@ -87,7 +87,91 @@ #define NETLINK_CRYPTO 19 /* Crypto layer */ #define NETLINK_SMC 20 /* SMC monitoring */ +/* Definitions associated with struct sockaddr_nl ***************************/ + +/* Flags values */ + +#define NLM_F_REQUEST 0x0001 /* It is request message. */ +#define NLM_F_MULTI 0x0002 /* Multipart message, terminated by NLMSG_DONE */ +#define NLM_F_ACK 0x0004 /* Reply with ack, with zero or error code */ +#define NLM_F_ECHO 0x0008 /* Echo this request */ +#define NLM_F_DUMP_INTR 0x0010 /* Dump was inconsistent due to sequence change */ +#define NLM_F_DUMP_FILTERED 0x0020 /* Dump was filtered as requested */ + +/* Modifiers to GET request */ + +#define NLM_F_ROOT 0x0100 /* specify tree root */ +#define NLM_F_MATCH 0x0200 /* return all matching */ +#define NLM_F_ATOMIC 0x0400 /* atomic GET */ +#define NLM_F_DUMP (NLM_F_ROOT | NLM_F_MATCH) + +/* Modifiers to NEW request */ + +#define NLM_F_REPLACE 0x0100 /* Override existing */ +#define NLM_F_EXCL 0x0200 /* Do not touch, if it exists */ +#define NLM_F_CREATE 0x0400 /* Create, if it does not exist */ +#define NLM_F_APPEND 0x0800 /* Add to end of list */ + +/* Modifiers to DELETE request */ + +#define NLM_F_NONREC 0x0100 /* Do not delete recursively */ + +/* Flags for ACK message */ + +#define NLM_F_CAPPED 0x0100 /* request was capped */ +#define NLM_F_ACK_TLVS 0x0200 /* extended ACK TVLs were included */ + +/* Definitions for struct nlmsghdr ******************************************/ + +#define NLMSG_MASK (sizeof(uint32_t) - 1) +#define NLMSG_ALIGN(n) (((n) + NLMSG_MASK) & ~NLMSG_MASK) +#define NLMSG_HDRLEN sizeof(struct nlmsghdr) +#define NLMSG_LENGTH(n) (NLMSG_HDRLEN + (n)) +#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len)) +#define NLMSG_DATA(hdr) ((FAR void*)(((FAR char*)hdr) + NLMSG_HDRLEN)) +#define NLMSG_NEXT(hdr,n) \ + ((n) -= NLMSG_ALIGN((hdr)->nlmsg_len), \ + (FAR struct nlmsghdr*) \ + (((FAR cha r*)(hdr)) + NLMSG_ALIGN((hdr)->nlmsg_len))) +#define NLMSG_PAYLOAD(hdr, len) \ + ((hdr)->nlmsg_len - NLMSG_SPACE((len))) + +#define NLMSG_NOOP 1 /* Nothing */ +#define NLMSG_ERROR 2 /* Error */ +#define NLMSG_DONE 3 /* End of a dump */ +#define NLMSG_OVERRUN 4 /* Data lost */ +#define NLMSG_MIN_TYPE 16 /* < 16: Reserved control messages */ + +/* Attribute definitions for struct rtattr **********************************/ + +/* Macros to handle attribute lists */ + +#define RTA_MASK (sizeof(uint32_t) - 1) +#define RTA_ALIGN(n) (((n) + RTA_MASK) & ~RTA_MASK) +#define RTA_OK(rta,n) \ + ((n) >= (int)sizeof(struct rtattr) && \ + (rta)->rta_len >= sizeof(struct rtattr) && \ + (rta)->rta_len <= (n)) +#define RTA_NEXT(rta, attrlen) \ + ((attrlen) -= RTA_ALIGN((rta)->rta_len), \ + (FAR struct rtattr*)(((FAR char*)(rta)) + RTA_ALIGN((rta)->rta_len))) +#define RTA_LENGTH(n) (RTA_ALIGN(sizeof(struct rtattr)) + (n)) +#define RTA_SPACE(n) RTA_ALIGN(RTA_LENGTH(n)) +#define RTA_DATA(rta) ((FAR void *)(((FAR char *)(rta)) + RTA_LENGTH(0))) +#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) + +/* NETLINK_ROUTE: Routing table attributes */ + +#define RTA_UNSPEC 0 /* Inored */ +#define RTA_DST 1 /* Argument: Route destination address */ +#define RTA_SRC 2 /* Argument: Route source address */ +#define RTA_IIF 3 /* Argument: Input interface index */ +#define RTA_OIF 4 /* Argument: Output interface index */ +#define RTA_GENMASK 5 /* Argument: Network address mask of sub-net */ +#define RTA_GATEWAY 6 /* Argument: Gateway address of the route */ + /* NETLINK_ROUTE protocol message types *************************************/ + /* Link layer: * * RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK @@ -196,78 +280,6 @@ #define RTM_GETNEIGHTBL 33 #define RTM_SETNEIGHTBL 34 -/* Definitions associated with struct sockaddr_nl ***************************/ -/* Flags values */ - -#define NLM_F_REQUEST 0x0001 /* It is request message. */ -#define NLM_F_MULTI 0x0002 /* Multipart message, terminated by NLMSG_DONE */ -#define NLM_F_ACK 0x0004 /* Reply with ack, with zero or error code */ -#define NLM_F_ECHO 0x0008 /* Echo this request */ -#define NLM_F_DUMP_INTR 0x0010 /* Dump was inconsistent due to sequence change */ -#define NLM_F_DUMP_FILTERED 0x0020 /* Dump was filtered as requested */ - -/* Modifiers to GET request */ - -#define NLM_F_ROOT 0x0100 /* specify tree root */ -#define NLM_F_MATCH 0x0200 /* return all matching */ -#define NLM_F_ATOMIC 0x0400 /* atomic GET */ -#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH) - -/* Modifiers to NEW request */ - -#define NLM_F_REPLACE 0x0100 /* Override existing */ -#define NLM_F_EXCL 0x0200 /* Do not touch, if it exists */ -#define NLM_F_CREATE 0x0400 /* Create, if it does not exist */ -#define NLM_F_APPEND 0x0800 /* Add to end of list */ - -/* Modifiers to DELETE request */ - -#define NLM_F_NONREC 0x0100 /* Do not delete recursively */ - -/* Flags for ACK message */ - -#define NLM_F_CAPPED 0x0100 /* request was capped */ -#define NLM_F_ACK_TLVS 0x0200 /* extended ACK TVLs were included */ - -/* Definitions for struct nlmsghdr ******************************************/ - -#define NLMSG_MASK (sizeof(uint32_t) - 1) -#define NLMSG_ALIGN(n) (((n) + NLMSG_MASK) & ~NLMSG_MASK) -#define NLMSG_HDRLEN sizeof(struct nlmsghdr) -#define NLMSG_LENGTH(n) (NLMSG_HDRLEN + (n)) -#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len)) -#define NLMSG_DATA(hdr) ((FAR void*)(((FAR char*)hdr) + NLMSG_HDRLEN)) -#define NLMSG_NEXT(hdr,n) \ - ((n) -= NLMSG_ALIGN((hdr)->nlmsg_len), \ - (FAR struct nlmsghdr*) \ - (((FAR cha r*)(hdr)) + NLMSG_ALIGN((hdr)->nlmsg_len))) -#define NLMSG_PAYLOAD(hdr, len) \ - ((hdr)->nlmsg_len - NLMSG_SPACE((len))) - -#define NLMSG_NOOP 1 /* Nothing */ -#define NLMSG_ERROR 2 /* Error */ -#define NLMSG_DONE 3 /* End of a dump */ -#define NLMSG_OVERRUN 4 /* Data lost */ -#define NLMSG_MIN_TYPE 16 /* < 16: Reserved control messages */ - -/* Definitions for struct rtattr ********************************************/ - -/* Macros to handle rtattributes */ - -#define RTA_MASK (sizeof(uint32_t) - 1) -#define RTA_ALIGN(n) (((n) + RTA_MASK) & ~RTA_MASK) -#define RTA_OK(rta,n) \ - ((n) >= (int)sizeof(struct rtattr) && \ - (rta)->rta_len >= sizeof(struct rtattr) && \ - (rta)->rta_len <= (n)) -#define RTA_NEXT(rta, attrlen) \ - ((attrlen) -= RTA_ALIGN((rta)->rta_len), \ - (FAR struct rtattr*)(((FAR char*)(rta)) + RTA_ALIGN((rta)->rta_len))) -#define RTA_LENGTH(n) (RTA_ALIGN(sizeof(struct rtattr)) + (n)) -#define RTA_SPACE(n) RTA_ALIGN(RTA_LENGTH(n)) -#define RTA_DATA(rta) ((FAR void *)(((FAR char *)(rta)) + RTA_LENGTH(0))) -#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) - /* Definitions for struct ifaddrmsg ****************************************/ /* ifa_flags definitions: ifa_flags is a flag word of IFA_F_SECONDARY for @@ -275,15 +287,15 @@ * address set by the user and other undocumented flags. */ -#define IFA_F_SECONDARY 0x01 -#define IFA_F_PERMANENT 0x02 +#define IFA_F_SECONDARY 0x01 +#define IFA_F_PERMANENT 0x02 /* Definitions for struct ifinfomsg *****************************************/ -#define IFLA_RTA(r) ((FAR struct rtattr *) \ - (((FAR char *)(r)) + \ - NLMSG_ALIGN(sizeof(struct ifinfomsg)))) -#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg)) +#define IFLA_RTA(r) ((FAR struct rtattr *) \ + (((FAR char *)(r)) + \ + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) +#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg)) /* Values for rta_type */ @@ -291,55 +303,47 @@ /* Definitions for struct rtmsg *********************************************/ -#define RTM_RTA(r) ((FAR struct rtattr *)\ - (((FAR char *)(r)) + \ - NLMSG_ALIGN(sizeof(struct rtmsg)))) -#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg)) +#define RTM_RTA(r) ((FAR struct rtattr *)\ + (((FAR char *)(r)) + \ + NLMSG_ALIGN(sizeof(struct rtmsg)))) +#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg)) /* rtm_table. Routing table identifiers */ -#define RT_TABLE_UNSPEC 0 - /* 1-251: User defined values */ -#define RT_TABLE_MAIN 254 -#define RT_TABLE_MAX 0xffffffff +#define RT_TABLE_UNSPEC 0 + /* 1-251: User defined values */ +#define RT_TABLE_MAIN 254 +#define RT_TABLE_MAX 0xffffffff /* rtm_type */ -#define RTN_UNSPEC 0 -#define RTN_UNICAST 1 /* Gateway or direct route */ -#define RTN_LOCAL 2 /* Accept locally */ -#define RTN_BROADCAST 3 /* Accept locally as broadcast; - * send as broadcast */ -#define RTN_ANYCAST 4 /* Accept locally as broadcast - * but send as unicast */ -#define RTN_MULTICAST 5 /* Multicast route */ +#define RTN_UNSPEC 0 +#define RTN_UNICAST 1 /* Gateway or direct route */ +#define RTN_LOCAL 2 /* Accept locally */ +#define RTN_BROADCAST 3 /* Accept locally as broadcast; + * send as broadcast */ +#define RTN_ANYCAST 4 /* Accept locally as broadcast + * but send as unicast */ +#define RTN_MULTICAST 5 /* Multicast route */ /* rtm_protocol */ -#define RTPROT_UNSPEC 0 -#define RTPROT_REDIRECT 1 /* Route installed by ICMP redirects */ -#define RTPROT_KERNEL 2 /* Route installed by kernel */ -#define RTPROT_BOOT 3 /* Route installed during boot */ -#define RTPROT_STATIC 4 /* Route installed by administrator */ -#define RTPROT_RA 5 /* RDISC/ND router advertisements */ -#define RTPROT_DHCP 6 /* DHCP client */ +#define RTPROT_UNSPEC 0 +#define RTPROT_REDIRECT 1 /* Route installed by ICMP redirects */ +#define RTPROT_KERNEL 2 /* Route installed by kernel */ +#define RTPROT_BOOT 3 /* Route installed during boot */ +#define RTPROT_STATIC 4 /* Route installed by administrator */ +#define RTPROT_RA 5 /* RDISC/ND router advertisements */ +#define RTPROT_DHCP 6 /* DHCP client */ /* rtm_scope */ -#define RT_SCOPE_UNIVERSE 0 - /* 1-199: User defined values */ -#define RT_SCOPE_SITE 200 -#define RT_SCOPE_LINK 253 -#define RT_SCOPE_HOST 254 -#define RT_SCOPE_NOWHERE 255 - -/* Routing table attributes */ - -#define RTA_UNSPEC 0 -#define RTA_DST 1 -#define RTA_SRC 2 -#define RTA_GENMASK 3 -#define RTA_GATEWAY 5 +#define RT_SCOPE_UNIVERSE 0 /* Global route */ + /* 1-199: User defined values */ +#define RT_SCOPE_SITE 200 /* Interior route in local system */ +#define RT_SCOPE_LINK 253 /* Route on this link */ +#define RT_SCOPE_HOST 254 /* Route on local host */ +#define RT_SCOPE_NOWHERE 255 /* Destination does not exist */ /**************************************************************************** * Public Type Definitions