mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 07:28:38 +08:00
netlink: add some definition
In order to support the compilation of third-party library, we encounter some situations where the macro is not defined, refer to the common implementation of other systems and add relevant definitions. Signed-off-by: zhanghongyu <zhanghongyu@xiaomi.com>
This commit is contained in:
parent
f917416340
commit
3538d1b313
2 changed files with 88 additions and 6 deletions
|
@ -165,7 +165,11 @@
|
|||
#define RTA_OIF 4 /* Argument: Output interface index */
|
||||
#define RTA_GATEWAY 5 /* Argument: Gateway address of the route */
|
||||
#define RTA_GENMASK 6 /* Argument: Network address mask of sub-net */
|
||||
#define RTA_MAX 6 /* MAX type, same as last argument */
|
||||
#define RTA_PRIORITY 7 /* Argument: Route priority */
|
||||
#define RTA_TABLE 8 /* Argument: Route table */
|
||||
#define RTA_PREFSRC 9 /* Argument: Preferred source address */
|
||||
#define RTA_METRICS 10 /* Argument: Route metric */
|
||||
#define RTA_MAX 10 /* MAX type, same as last argument */
|
||||
|
||||
/* NETLINK_ROUTE protocol message types *************************************/
|
||||
|
||||
|
@ -275,9 +279,10 @@
|
|||
#define RTM_NEWNEIGHTBL 64
|
||||
#define RTM_GETNEIGHTBL 66
|
||||
#define RTM_SETNEIGHTBL 67
|
||||
#define RTM_NEWNDUSEROPT 68
|
||||
|
||||
#define RTM_BASE 16
|
||||
#define RTM_MAX 67
|
||||
#define RTM_MAX 68
|
||||
|
||||
/* Definitions for struct ifinfomsg *****************************************/
|
||||
|
||||
|
@ -289,6 +294,22 @@
|
|||
/* Values for rta_type */
|
||||
|
||||
#define IFLA_IFNAME 1
|
||||
#define IFLA_ADDRESS 2
|
||||
#define IFLA_MTU 3
|
||||
#define IFLA_WIRELESS 4
|
||||
#define IFLA_STATS 5
|
||||
#define IFLA_OPERSTATE 6
|
||||
#define IFLA_LINKMODE 7
|
||||
#define IFLA_BROADCAST 8
|
||||
#define IFLA_LINK 9
|
||||
#define IFLA_QDISC 10
|
||||
#define IFLA_COST 11
|
||||
#define IFLA_PRIORITY 12
|
||||
#define IFLA_MASTER 13
|
||||
#define IFLA_PROTINFO 14
|
||||
#define IFLA_TXQLEN 15
|
||||
#define IFLA_MAP 16
|
||||
#define IFLA_WEIGHT 17
|
||||
|
||||
/* Definitions for struct rtmsg *********************************************/
|
||||
|
||||
|
@ -389,6 +410,11 @@
|
|||
#define RTNLGRP_NSID 28
|
||||
#define RTNLGRP_MAX 29
|
||||
|
||||
#define FRA_UNSPEC 0
|
||||
#define FRA_FWMARK 1 /* Mark */
|
||||
#define FRA_TABLE 2 /* Extended table id */
|
||||
#define FRA_FWMASK 3 /* Mask for netfilter mark */
|
||||
|
||||
/**
|
||||
* nla_type (16 bits)
|
||||
* +---+---+-------------------------------+
|
||||
|
@ -408,6 +434,10 @@
|
|||
#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
|
||||
#define NLA_HDRLEN (NLA_ALIGN(sizeof(struct nlattr)))
|
||||
|
||||
/* rtm_flags */
|
||||
|
||||
#define RTM_F_CLONED 0x200 /* This route is cloned */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Type Definitions
|
||||
****************************************************************************/
|
||||
|
@ -557,6 +587,31 @@ struct nla_bitfield32
|
|||
uint32_t selector;
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Neighbor Discovery userland options
|
||||
*/
|
||||
|
||||
struct nduseroptmsg
|
||||
{
|
||||
unsigned char nduseropt_family;
|
||||
unsigned char nduseropt_pad1;
|
||||
unsigned short nduseropt_opts_len; /* Total length of options */
|
||||
int nduseropt_ifindex;
|
||||
uint8_t nduseropt_icmp_type;
|
||||
uint8_t nduseropt_icmp_code;
|
||||
unsigned short nduseropt_pad2;
|
||||
unsigned int nduseropt_pad3;
|
||||
|
||||
/* Followed by one or more ND options */
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
NDUSEROPT_UNSPEC,
|
||||
NDUSEROPT_SRCADDR,
|
||||
__NDUSEROPT_MAX
|
||||
};
|
||||
|
||||
/* This struct should be in sync with struct rtnl_link_stats64 */
|
||||
|
||||
struct rtnl_link_stats
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include <net/route.h>
|
||||
#include <netpacket/netlink.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/net/net.h>
|
||||
|
@ -76,8 +77,14 @@ struct getlink_recvfrom_response_s
|
|||
{
|
||||
struct nlmsghdr hdr;
|
||||
struct ifinfomsg iface;
|
||||
struct rtattr attr;
|
||||
uint8_t data[IFNAMSIZ]; /* IFLA_IFNAME is the only attribute supported */
|
||||
struct rtattr attrmtu;
|
||||
uint32_t mtu; /* IFLA_MTU attribute */
|
||||
#if defined(CONFIG_NET_ETHERNET) || defined(CONFIG_NET_TUN)
|
||||
struct rtattr attraddr;
|
||||
uint8_t mac[NLMSG_ALIGN(ETH_ALEN)]; /* IFLA_ADDRESS attribute */
|
||||
#endif
|
||||
struct rtattr attrname;
|
||||
uint8_t data[IFNAMSIZ]; /* IFLA_IFNAME attribute */
|
||||
};
|
||||
|
||||
struct getlink_recvfrom_rsplist_s
|
||||
|
@ -321,8 +328,28 @@ netlink_get_device(FAR struct net_driver_s *dev,
|
|||
resp->iface.ifi_flags = dev->d_flags;
|
||||
resp->iface.ifi_change = 0xffffffff;
|
||||
|
||||
resp->attr.rta_len = RTA_LENGTH(strnlen(dev->d_ifname, IFNAMSIZ));
|
||||
resp->attr.rta_type = IFLA_IFNAME;
|
||||
resp->attrmtu.rta_len = RTA_LENGTH(sizeof(uint32_t));
|
||||
resp->attrmtu.rta_type = IFLA_MTU;
|
||||
resp->mtu = NETDEV_PKTSIZE(dev) - NET_LL_HDRLEN(dev);
|
||||
|
||||
#if defined(CONFIG_NET_ETHERNET) || defined(CONFIG_NET_TUN)
|
||||
resp->attraddr.rta_len = RTA_LENGTH(ETH_ALEN);
|
||||
resp->attraddr.rta_type = IFLA_ADDRESS;
|
||||
if (dev->d_lltype == NET_LL_ETHERNET ||
|
||||
dev->d_lltype == NET_LL_IEEE80211 ||
|
||||
dev->d_lltype == NET_LL_LOOPBACK ||
|
||||
dev->d_lltype == NET_LL_TUN)
|
||||
{
|
||||
memcpy(&resp->mac, &dev->d_mac.ether, ETH_ALEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
memset(&resp->mac, 0, ETH_ALEN);
|
||||
}
|
||||
#endif
|
||||
|
||||
resp->attrname.rta_len = RTA_LENGTH(strnlen(dev->d_ifname, IFNAMSIZ));
|
||||
resp->attrname.rta_type = IFLA_IFNAME;
|
||||
|
||||
strlcpy((FAR char *)resp->data, dev->d_ifname, IFNAMSIZ);
|
||||
|
||||
|
|
Loading…
Reference in a new issue