[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 6/6] linux-user: add QEMU_IFLA_INFO_KIND nested type
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 6/6] linux-user: add QEMU_IFLA_INFO_KIND nested type for tun |
Date: |
Mon, 20 Aug 2018 00:17:07 +0200 |
Signed-off-by: Laurent Vivier <address@hidden>
Message-Id: <address@hidden>
---
linux-user/syscall.c | 48 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index da1fcaf4ca..424296d1a1 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -501,6 +501,20 @@ enum {
QEMU___IFLA_BRPORT_MAX
};
+enum {
+ QEMU_IFLA_TUN_UNSPEC,
+ QEMU_IFLA_TUN_OWNER,
+ QEMU_IFLA_TUN_GROUP,
+ QEMU_IFLA_TUN_TYPE,
+ QEMU_IFLA_TUN_PI,
+ QEMU_IFLA_TUN_VNET_HDR,
+ QEMU_IFLA_TUN_PERSIST,
+ QEMU_IFLA_TUN_MULTI_QUEUE,
+ QEMU_IFLA_TUN_NUM_QUEUES,
+ QEMU_IFLA_TUN_NUM_DISABLED_QUEUES,
+ QEMU___IFLA_TUN_MAX,
+};
+
enum {
QEMU_IFLA_INFO_UNSPEC,
QEMU_IFLA_INFO_KIND,
@@ -2315,6 +2329,34 @@ static abi_long
host_to_target_slave_data_bridge_nlattr(struct nlattr *nlattr,
return 0;
}
+static abi_long host_to_target_data_tun_nlattr(struct nlattr *nlattr,
+ void *context)
+{
+ uint32_t *u32;
+
+ switch (nlattr->nla_type) {
+ /* uint8_t */
+ case QEMU_IFLA_TUN_TYPE:
+ case QEMU_IFLA_TUN_PI:
+ case QEMU_IFLA_TUN_VNET_HDR:
+ case QEMU_IFLA_TUN_PERSIST:
+ case QEMU_IFLA_TUN_MULTI_QUEUE:
+ break;
+ /* uint32_t */
+ case QEMU_IFLA_TUN_NUM_QUEUES:
+ case QEMU_IFLA_TUN_NUM_DISABLED_QUEUES:
+ case QEMU_IFLA_TUN_OWNER:
+ case QEMU_IFLA_TUN_GROUP:
+ u32 = NLA_DATA(nlattr);
+ *u32 = tswap32(*u32);
+ break;
+ default:
+ gemu_log("Unknown QEMU_IFLA_TUN type %d\n", nlattr->nla_type);
+ break;
+ }
+ return 0;
+}
+
struct linkinfo_context {
int len;
char *name;
@@ -2349,6 +2391,12 @@ static abi_long
host_to_target_data_linkinfo_nlattr(struct nlattr *nlattr,
nlattr->nla_len,
NULL,
host_to_target_data_bridge_nlattr);
+ } else if (strncmp(li_context->name, "tun",
+ li_context->len) == 0) {
+ return host_to_target_for_each_nlattr(NLA_DATA(nlattr),
+ nlattr->nla_len,
+ NULL,
+
host_to_target_data_tun_nlattr);
} else {
gemu_log("Unknown QEMU_IFLA_INFO_KIND %s\n", li_context->name);
}
--
2.17.1
- [Qemu-devel] [PULL 0/6] Linux user for 3.1 patches, Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 2/6] linux-user: fix 32bit g2h()/h2g(), Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 5/6] linux-user: update netlink route types, Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 3/6] sh4: fix use_icount with linux-user, Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 4/6] linux-user: fix recvmsg()/recvfrom() with netlink and MSG_TRUNC, Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 1/6] qemu-binfmt-conf.sh: add x86_64 target, Laurent Vivier, 2018/08/19
- [Qemu-devel] [PULL 6/6] linux-user: add QEMU_IFLA_INFO_KIND nested type for tun,
Laurent Vivier <=
- Re: [Qemu-devel] [PULL 0/6] Linux user for 3.1 patches, no-reply, 2018/08/20
- Re: [Qemu-devel] [PULL 0/6] Linux user for 3.1 patches, Peter Maydell, 2018/08/20