|
@@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void *out_msg, int op)
|
|
|
|
|
|
out->body.kvp_ip_val.dhcp_enabled = in->kvp_ip_val.dhcp_enabled;
|
|
|
|
|
|
+ /* fallthrough */
|
|
|
+
|
|
|
+ case KVP_OP_GET_IP_INFO:
|
|
|
utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id,
|
|
|
MAX_ADAPTER_ID_SIZE,
|
|
|
UTF16_LITTLE_ENDIAN,
|
|
@@ -405,7 +408,11 @@ kvp_send_key(struct work_struct *dummy)
|
|
|
process_ib_ipinfo(in_msg, message, KVP_OP_SET_IP_INFO);
|
|
|
break;
|
|
|
case KVP_OP_GET_IP_INFO:
|
|
|
- /* We only need to pass on message->kvp_hdr.operation. */
|
|
|
+ /*
|
|
|
+ * We only need to pass on the info of operation, adapter_id
|
|
|
+ * and addr_family to the userland kvp daemon.
|
|
|
+ */
|
|
|
+ process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO);
|
|
|
break;
|
|
|
case KVP_OP_SET:
|
|
|
switch (in_msg->body.kvp_set.data.value_type) {
|
|
@@ -446,9 +453,9 @@ kvp_send_key(struct work_struct *dummy)
|
|
|
|
|
|
}
|
|
|
|
|
|
- break;
|
|
|
-
|
|
|
- case KVP_OP_GET:
|
|
|
+ /*
|
|
|
+ * The key is always a string - utf16 encoding.
|
|
|
+ */
|
|
|
message->body.kvp_set.data.key_size =
|
|
|
utf16s_to_utf8s(
|
|
|
(wchar_t *)in_msg->body.kvp_set.data.key,
|
|
@@ -456,6 +463,17 @@ kvp_send_key(struct work_struct *dummy)
|
|
|
UTF16_LITTLE_ENDIAN,
|
|
|
message->body.kvp_set.data.key,
|
|
|
HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1;
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case KVP_OP_GET:
|
|
|
+ message->body.kvp_get.data.key_size =
|
|
|
+ utf16s_to_utf8s(
|
|
|
+ (wchar_t *)in_msg->body.kvp_get.data.key,
|
|
|
+ in_msg->body.kvp_get.data.key_size,
|
|
|
+ UTF16_LITTLE_ENDIAN,
|
|
|
+ message->body.kvp_get.data.key,
|
|
|
+ HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1;
|
|
|
break;
|
|
|
|
|
|
case KVP_OP_DELETE:
|