|
@@ -161,6 +161,14 @@ enum {
|
|
QEMU_IFLA_PROTO_DOWN_REASON,
|
|
QEMU_IFLA_PROTO_DOWN_REASON,
|
|
QEMU_IFLA_PARENT_DEV_NAME,
|
|
QEMU_IFLA_PARENT_DEV_NAME,
|
|
QEMU_IFLA_PARENT_DEV_BUS_NAME,
|
|
QEMU_IFLA_PARENT_DEV_BUS_NAME,
|
|
|
|
+ QEMU_IFLA_GRO_MAX_SIZE,
|
|
|
|
+ QEMU_IFLA_TSO_MAX_SIZE,
|
|
|
|
+ QEMU_IFLA_TSO_MAX_SEGS,
|
|
|
|
+ QEMU_IFLA_ALLMULTI,
|
|
|
|
+ QEMU_IFLA_DEVLINK_PORT,
|
|
|
|
+ QEMU_IFLA_GSO_IPV4_MAX_SIZE,
|
|
|
|
+ QEMU_IFLA_GRO_IPV4_MAX_SIZE,
|
|
|
|
+ QEMU_IFLA_DPLL_PIN,
|
|
QEMU___IFLA_MAX
|
|
QEMU___IFLA_MAX
|
|
};
|
|
};
|
|
|
|
|
|
@@ -1002,6 +1010,22 @@ static abi_long host_to_target_data_vfinfo_nlattr(struct nlattr *nlattr,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static abi_long host_to_target_data_prop_nlattr(struct nlattr *nlattr,
|
|
|
|
+ void *context)
|
|
|
|
+{
|
|
|
|
+ switch (nlattr->nla_type) {
|
|
|
|
+ /* string */
|
|
|
|
+ case QEMU_IFLA_ALT_IFNAME:
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ qemu_log_mask(LOG_UNIMP, "Unknown host PROP type: %d\n",
|
|
|
|
+ nlattr->nla_type);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr)
|
|
static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr)
|
|
{
|
|
{
|
|
uint32_t *u32;
|
|
uint32_t *u32;
|
|
@@ -1010,7 +1034,7 @@ static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr)
|
|
struct rtnl_link_ifmap *map;
|
|
struct rtnl_link_ifmap *map;
|
|
struct linkinfo_context li_context;
|
|
struct linkinfo_context li_context;
|
|
|
|
|
|
- switch (rtattr->rta_type) {
|
|
|
|
|
|
+ switch (rtattr->rta_type & NLA_TYPE_MASK) {
|
|
/* binary stream */
|
|
/* binary stream */
|
|
case QEMU_IFLA_ADDRESS:
|
|
case QEMU_IFLA_ADDRESS:
|
|
case QEMU_IFLA_BROADCAST:
|
|
case QEMU_IFLA_BROADCAST:
|
|
@@ -1048,6 +1072,12 @@ static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr)
|
|
case QEMU_IFLA_CARRIER_DOWN_COUNT:
|
|
case QEMU_IFLA_CARRIER_DOWN_COUNT:
|
|
case QEMU_IFLA_MIN_MTU:
|
|
case QEMU_IFLA_MIN_MTU:
|
|
case QEMU_IFLA_MAX_MTU:
|
|
case QEMU_IFLA_MAX_MTU:
|
|
|
|
+ case QEMU_IFLA_GRO_MAX_SIZE:
|
|
|
|
+ case QEMU_IFLA_TSO_MAX_SIZE:
|
|
|
|
+ case QEMU_IFLA_TSO_MAX_SEGS:
|
|
|
|
+ case QEMU_IFLA_ALLMULTI:
|
|
|
|
+ case QEMU_IFLA_GSO_IPV4_MAX_SIZE:
|
|
|
|
+ case QEMU_IFLA_GRO_IPV4_MAX_SIZE:
|
|
u32 = RTA_DATA(rtattr);
|
|
u32 = RTA_DATA(rtattr);
|
|
*u32 = tswap32(*u32);
|
|
*u32 = tswap32(*u32);
|
|
break;
|
|
break;
|
|
@@ -1143,6 +1173,10 @@ static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr)
|
|
return host_to_target_for_each_nlattr(RTA_DATA(rtattr), rtattr->rta_len,
|
|
return host_to_target_for_each_nlattr(RTA_DATA(rtattr), rtattr->rta_len,
|
|
NULL,
|
|
NULL,
|
|
host_to_target_data_vfinfo_nlattr);
|
|
host_to_target_data_vfinfo_nlattr);
|
|
|
|
+ case QEMU_IFLA_PROP_LIST:
|
|
|
|
+ return host_to_target_for_each_nlattr(RTA_DATA(rtattr), rtattr->rta_len,
|
|
|
|
+ NULL,
|
|
|
|
+ host_to_target_data_prop_nlattr);
|
|
default:
|
|
default:
|
|
qemu_log_mask(LOG_UNIMP, "Unknown host QEMU_IFLA type: %d\n",
|
|
qemu_log_mask(LOG_UNIMP, "Unknown host QEMU_IFLA type: %d\n",
|
|
rtattr->rta_type);
|
|
rtattr->rta_type);
|