diff --git a/hpvd-Changes-for-adding-keyfile-support-in-RHEL-specific-.patch b/hpvd-Changes-for-adding-keyfile-support-in-RHEL-specific-.patch new file mode 100644 index 0000000..601bdea --- /dev/null +++ b/hpvd-Changes-for-adding-keyfile-support-in-RHEL-specific-.patch @@ -0,0 +1,65 @@ +From eeb77fe2cd3232abd96a1bdf1bbcfcd04053ffff Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Tue, 10 Oct 2023 11:50:30 +0530 +Subject: [PATCH 3/3] Changes for adding keyfile support in RHEL specific + script + +RH-Author: Ani Sinha +RH-MergeRequest: 13: hv/hv_kvp_daemon:Support for keyfile based connection profile +RH-Jira: RHEL-9901 +RH-Acked-by: Jon Maloy +RH-Commit: [3/3] 9ce1fe8f1578d41d4265d2c970123c8f71c0c80c + +Some adjustments to the RHEL specific customization script in order to support +Network Manager keyfiles. These changes were tested internally by Red Hat QE. +These changes are mostly trivial and are not pushed upstream at this momemnt. + +Jira: https://issues.redhat.com/browse/RHEL-9901 + +Signed-off-by: Ani Sinha +--- + hv_set_ifconfig.sh | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +diff --git a/hv_set_ifconfig.sh b/hv_set_ifconfig.sh +index 9c2ee30..93decd6 100644 +--- a/hv_set_ifconfig.sh ++++ b/hv_set_ifconfig.sh +@@ -74,19 +74,23 @@ + # call. + # + ++# This is RHEL specific bash script that configures NM keyfiles. ++# ifcfg files passed as the first argument to this script remains untouched. + ++if [ -z "$2" ]; then ++ echo "No input NM keyfile. Exiting!" ++ exit 1 ++fi + +-echo "IPV6INIT=yes" >> $1 +-echo "PEERDNS=yes" >> $1 +-echo "ONBOOT=yes" >> $1 ++sed -i '/\[ipv4\]/a ignore-auto-dns=false' $2 ++sed -i '/\[connection\]/a autoconnect=true' $2 + +-#Unlike older sysconfig scripts, NetworkManager expects GATEWAYx=ipaddr for all values of x. +-#So the first gateway is GATEWAY0 instead of GATEWAY. Other values should remain unchanged. +-#Workaround this by replacing GATEWAY= with GATEWAY0=. +-sed -i "s/GATEWAY=/GATEWAY0=/" $1 ++filename="${2##*/}" + +-cp $1 /etc/sysconfig/network-scripts/ ++cp $2 /etc/NetworkManager/system-connections/ ++chmod 600 /etc/NetworkManager/system-connections/$filename + +-filename="${1##*/}" +-nmcli connection load "/etc/sysconfig/network-scripts/${filename}" +-nmcli connection up filename "/etc/sysconfig/network-scripts/${filename}" ++nmcli connection load "/etc/NetworkManager/system-connections/${filename}" ++nmcli connection up filename "/etc/NetworkManager/system-connections/${filename}" ++ ++exit 0 +-- +2.41.0 + diff --git a/hpvd-hv-hv_kvp_daemon-Some-small-fixes-for-handling-NM-ke.patch b/hpvd-hv-hv_kvp_daemon-Some-small-fixes-for-handling-NM-ke.patch new file mode 100644 index 0000000..b131033 --- /dev/null +++ b/hpvd-hv-hv_kvp_daemon-Some-small-fixes-for-handling-NM-ke.patch @@ -0,0 +1,99 @@ +From 0b5a275023d7779db38f3d944103419532f034f4 Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Mon, 16 Oct 2023 19:03:33 +0530 +Subject: [PATCH 2/3] hv/hv_kvp_daemon: Some small fixes for handling NM + keyfiles + +RH-Author: Ani Sinha +RH-MergeRequest: 13: hv/hv_kvp_daemon:Support for keyfile based connection profile +RH-Jira: RHEL-9901 +RH-Acked-by: Jon Maloy +RH-Commit: [2/3] a6969ec766ed16a85e06204e79a0f1d2d432b214 + +Some small fixes: +- lets make sure we are not adding ipv4 addresses in ipv6 section in + keyfile and vice versa. +- ADDR_FAMILY_IPV6 is a bit in addr_family. Test that bit instead of + checking the whole value of addr_family. +- Some trivial fixes in hv_set_ifconfig.sh. + +These fixes are proposed after doing some internal testing at Red Hat. + +Cherry-picked from upstream linux +kernel commit c3803203bc5ec910a ("hv/hv_kvp_daemon: Some small fixes for handling NM keyfiles") +CC: Shradha Gupta +CC: Saurabh Sengar +Fixes: 42999c904612 ("hv/hv_kvp_daemon:Support for keyfile based connection profile") +Signed-off-by: Ani Sinha +Reviewed-by: Shradha Gupta +Signed-off-by: Wei Liu +Message-ID: <20231016133122.2419537-1-anisinha@redhat.com> +--- + hv_kvp_daemon.c | 20 ++++++++++++-------- + hv_set_ifconfig.sh | 4 ++-- + 2 files changed, 14 insertions(+), 10 deletions(-) + +diff --git a/hv_kvp_daemon.c b/hv_kvp_daemon.c +index 264eeb9..318e2da 100644 +--- a/hv_kvp_daemon.c ++++ b/hv_kvp_daemon.c +@@ -1421,7 +1421,7 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + if (error) + goto setval_error; + +- if (new_val->addr_family == ADDR_FAMILY_IPV6) { ++ if (new_val->addr_family & ADDR_FAMILY_IPV6) { + error = fprintf(nmfile, "\n[ipv6]\n"); + if (error < 0) + goto setval_error; +@@ -1455,14 +1455,18 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + if (error < 0) + goto setval_error; + +- error = fprintf(nmfile, "gateway=%s\n", (char *)new_val->gate_way); +- if (error < 0) +- goto setval_error; +- +- error = fprintf(nmfile, "dns=%s\n", (char *)new_val->dns_addr); +- if (error < 0) +- goto setval_error; ++ /* we do not want ipv4 addresses in ipv6 section and vice versa */ ++ if (is_ipv6 != is_ipv4((char *)new_val->gate_way)) { ++ error = fprintf(nmfile, "gateway=%s\n", (char *)new_val->gate_way); ++ if (error < 0) ++ goto setval_error; ++ } + ++ if (is_ipv6 != is_ipv4((char *)new_val->dns_addr)) { ++ error = fprintf(nmfile, "dns=%s\n", (char *)new_val->dns_addr); ++ if (error < 0) ++ goto setval_error; ++ } + fclose(nmfile); + fclose(ifcfg_file); + +diff --git a/hv_set_ifconfig.sh b/hv_set_ifconfig.sh +index 35aae6f..9c2ee30 100644 +--- a/hv_set_ifconfig.sh ++++ b/hv_set_ifconfig.sh +@@ -53,7 +53,7 @@ + # or "manual" if no boot-time protocol should be used) + # + # address1=ipaddr1/plen +-# address=ipaddr2/plen ++# address2=ipaddr2/plen + # + # gateway=gateway1;gateway2 + # +@@ -61,7 +61,7 @@ + # + # [ipv6] + # address1=ipaddr1/plen +-# address2=ipaddr1/plen ++# address2=ipaddr2/plen + # + # gateway=gateway1;gateway2 + # +-- +2.41.0 + diff --git a/hpvd-hv-hv_kvp_daemon-Support-for-keyfile-based-connectio.patch b/hpvd-hv-hv_kvp_daemon-Support-for-keyfile-based-connectio.patch new file mode 100644 index 0000000..3f2b83a --- /dev/null +++ b/hpvd-hv-hv_kvp_daemon-Support-for-keyfile-based-connectio.patch @@ -0,0 +1,425 @@ +From a360344134e075dfebc99c1551e141e2ec25a2fa Mon Sep 17 00:00:00 2001 +From: Shradha Gupta +Date: Mon, 9 Oct 2023 03:38:40 -0700 +Subject: [PATCH 1/3] hv/hv_kvp_daemon:Support for keyfile based connection + profile + +RH-Author: Ani Sinha +RH-MergeRequest: 13: hv/hv_kvp_daemon:Support for keyfile based connection profile +RH-Jira: RHEL-9901 +RH-Acked-by: Jon Maloy +RH-Commit: [1/3] b8937934d5aaa0305a1c8d19381aba5cf0cc185e + +Ifcfg config file support in NetworkManger is deprecated. This patch +provides support for the new keyfile config format for connection +profiles in NetworkManager. The patch modifies the hv_kvp_daemon code +to generate the new network configuration in keyfile +format(.ini-style format) along with a ifcfg format configuration. +The ifcfg format configuration is also retained to support easy +backward compatibility for distro vendors. These configurations are +stored in temp files which are further translated using the +hv_set_ifconfig.sh script. This script is implemented by individual +distros based on the network management commands supported. +For example, RHEL's implementation could be found here: +https://gitlab.com/redhat/centos-stream/src/hyperv-daemons/-/blob/c9s/hv_set_ifconfig.sh +Debian's implementation could be found here: +https://github.com/endlessm/linux/blob/master/debian/cloud-tools/hv_set_ifconfig + +The next part of this support is to let the Distro vendors consume +these modified implementations to the new configuration format. + +Cherry-picked from upstream linux +kernel commit 42999c904612 ("hv/hv_kvp_daemon:Support for keyfile based connection profile") +Tested-on: Rhel9(Hyper-V, Azure)(nm and ifcfg files verified) +Signed-off-by: Shradha Gupta +Reviewed-by: Saurabh Sengar +Reviewed-by: Ani Sinha +Signed-off-by: Wei Liu +Link: https://lore.kernel.org/r/1696847920-31125-1-git-send-email-shradhagupta@linux.microsoft.com +--- + hv_kvp_daemon.c | 233 +++++++++++++++++++++++++++++++++++++++------ + hv_set_ifconfig.sh | 30 +++++- + 2 files changed, 230 insertions(+), 33 deletions(-) + +diff --git a/hv_kvp_daemon.c b/hv_kvp_daemon.c +index 27f5e7d..264eeb9 100644 +--- a/hv_kvp_daemon.c ++++ b/hv_kvp_daemon.c +@@ -1171,12 +1171,79 @@ static int process_ip_string(FILE *f, char *ip_string, int type) + return 0; + } + ++/* ++ * Only IPv4 subnet strings needs to be converted to plen ++ * For IPv6 the subnet is already privided in plen format ++ */ ++static int kvp_subnet_to_plen(char *subnet_addr_str) ++{ ++ int plen = 0; ++ struct in_addr subnet_addr4; ++ ++ /* ++ * Convert subnet address to binary representation ++ */ ++ if (inet_pton(AF_INET, subnet_addr_str, &subnet_addr4) == 1) { ++ uint32_t subnet_mask = ntohl(subnet_addr4.s_addr); ++ ++ while (subnet_mask & 0x80000000) { ++ plen++; ++ subnet_mask <<= 1; ++ } ++ } else { ++ return -1; ++ } ++ ++ return plen; ++} ++ ++static int process_ip_string_nm(FILE *f, char *ip_string, char *subnet, ++ int is_ipv6) ++{ ++ char addr[INET6_ADDRSTRLEN]; ++ char subnet_addr[INET6_ADDRSTRLEN]; ++ int error, i = 0; ++ int ip_offset = 0, subnet_offset = 0; ++ int plen; ++ ++ memset(addr, 0, sizeof(addr)); ++ memset(subnet_addr, 0, sizeof(subnet_addr)); ++ ++ while (parse_ip_val_buffer(ip_string, &ip_offset, addr, ++ (MAX_IP_ADDR_SIZE * 2)) && ++ parse_ip_val_buffer(subnet, ++ &subnet_offset, ++ subnet_addr, ++ (MAX_IP_ADDR_SIZE * ++ 2))) { ++ if (!is_ipv6) ++ plen = kvp_subnet_to_plen((char *)subnet_addr); ++ else ++ plen = atoi(subnet_addr); ++ ++ if (plen < 0) ++ return plen; ++ ++ error = fprintf(f, "address%d=%s/%d\n", ++i, (char *)addr, ++ plen); ++ if (error < 0) ++ return error; ++ ++ memset(addr, 0, sizeof(addr)); ++ memset(subnet_addr, 0, sizeof(subnet_addr)); ++ } ++ ++ return 0; ++} ++ + static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + { + int error = 0; +- char if_file[PATH_MAX]; +- FILE *file; ++ char if_filename[PATH_MAX]; ++ char nm_filename[PATH_MAX]; ++ FILE *ifcfg_file, *nmfile; + char cmd[PATH_MAX]; ++ int is_ipv6 = 0; + char *mac_addr; + int str_len; + +@@ -1197,7 +1264,7 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + * in a given distro to configure the interface and so are free + * ignore information that may not be relevant. + * +- * Here is the format of the ip configuration file: ++ * Here is the ifcfg format of the ip configuration file: + * + * HWADDR=macaddr + * DEVICE=interface name +@@ -1220,6 +1287,32 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + * tagged as IPV6_DEFAULTGW and IPV6 NETMASK will be tagged as + * IPV6NETMASK. + * ++ * Here is the keyfile format of the ip configuration file: ++ * ++ * [ethernet] ++ * mac-address=macaddr ++ * [connection] ++ * interface-name=interface name ++ * ++ * [ipv4] ++ * method= (where is "auto" if DHCP is configured ++ * or "manual" if no boot-time protocol should be used) ++ * ++ * address1=ipaddr1/plen ++ * address2=ipaddr2/plen ++ * ++ * gateway=gateway1;gateway2 ++ * ++ * dns=dns1;dns2 ++ * ++ * [ipv6] ++ * address1=ipaddr1/plen ++ * address2=ipaddr2/plen ++ * ++ * gateway=gateway1;gateway2 ++ * ++ * dns=dns1;dns2 ++ * + * The host can specify multiple ipv4 and ipv6 addresses to be + * configured for the interface. Furthermore, the configuration + * needs to be persistent. A subsequent GET call on the interface +@@ -1227,14 +1320,29 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + * call. + */ + +- snprintf(if_file, sizeof(if_file), "%s%s%s", KVP_CONFIG_LOC, +- "/ifcfg-", if_name); ++ /* ++ * We are populating both ifcfg and nmconnection files ++ */ ++ snprintf(if_filename, sizeof(if_filename), "%s%s%s", KVP_CONFIG_LOC, ++ "/ifcfg-", if_name); + +- file = fopen(if_file, "w"); ++ ifcfg_file = fopen(if_filename, "w"); + +- if (file == NULL) { ++ if (!ifcfg_file) { + syslog(LOG_ERR, "Failed to open config file; error: %d %s", +- errno, strerror(errno)); ++ errno, strerror(errno)); ++ return HV_E_FAIL; ++ } ++ ++ snprintf(nm_filename, sizeof(nm_filename), "%s%s%s%s", KVP_CONFIG_LOC, ++ "/", if_name, ".nmconnection"); ++ ++ nmfile = fopen(nm_filename, "w"); ++ ++ if (!nmfile) { ++ syslog(LOG_ERR, "Failed to open config file; error: %d %s", ++ errno, strerror(errno)); ++ fclose(ifcfg_file); + return HV_E_FAIL; + } + +@@ -1248,14 +1356,31 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + goto setval_error; + } + +- error = kvp_write_file(file, "HWADDR", "", mac_addr); +- free(mac_addr); ++ error = kvp_write_file(ifcfg_file, "HWADDR", "", mac_addr); ++ if (error < 0) ++ goto setmac_error; ++ ++ error = kvp_write_file(ifcfg_file, "DEVICE", "", if_name); ++ if (error < 0) ++ goto setmac_error; ++ ++ error = fprintf(nmfile, "\n[connection]\n"); ++ if (error < 0) ++ goto setmac_error; ++ ++ error = kvp_write_file(nmfile, "interface-name", "", if_name); + if (error) +- goto setval_error; ++ goto setmac_error; + +- error = kvp_write_file(file, "DEVICE", "", if_name); ++ error = fprintf(nmfile, "\n[ethernet]\n"); ++ if (error < 0) ++ goto setmac_error; ++ ++ error = kvp_write_file(nmfile, "mac-address", "", mac_addr); + if (error) +- goto setval_error; ++ goto setmac_error; ++ ++ free(mac_addr); + + /* + * The dhcp_enabled flag is only for IPv4. In the case the host only +@@ -1263,47 +1388,91 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + * proceed to parse and pass the IPv6 information to the + * disto-specific script hv_set_ifconfig. + */ ++ ++ /* ++ * First populate the ifcfg file format ++ */ + if (new_val->dhcp_enabled) { +- error = kvp_write_file(file, "BOOTPROTO", "", "dhcp"); ++ error = kvp_write_file(ifcfg_file, "BOOTPROTO", "", "dhcp"); + if (error) + goto setval_error; +- + } else { +- error = kvp_write_file(file, "BOOTPROTO", "", "none"); ++ error = kvp_write_file(ifcfg_file, "BOOTPROTO", "", "none"); + if (error) + goto setval_error; + } + +- /* +- * Write the configuration for ipaddress, netmask, gateway and +- * name servers. +- */ +- +- error = process_ip_string(file, (char *)new_val->ip_addr, IPADDR); ++ error = process_ip_string(ifcfg_file, (char *)new_val->ip_addr, ++ IPADDR); + if (error) + goto setval_error; + +- error = process_ip_string(file, (char *)new_val->sub_net, NETMASK); ++ error = process_ip_string(ifcfg_file, (char *)new_val->sub_net, ++ NETMASK); + if (error) + goto setval_error; + +- error = process_ip_string(file, (char *)new_val->gate_way, GATEWAY); ++ error = process_ip_string(ifcfg_file, (char *)new_val->gate_way, ++ GATEWAY); + if (error) + goto setval_error; + +- error = process_ip_string(file, (char *)new_val->dns_addr, DNS); ++ error = process_ip_string(ifcfg_file, (char *)new_val->dns_addr, DNS); + if (error) + goto setval_error; + +- fclose(file); ++ if (new_val->addr_family == ADDR_FAMILY_IPV6) { ++ error = fprintf(nmfile, "\n[ipv6]\n"); ++ if (error < 0) ++ goto setval_error; ++ is_ipv6 = 1; ++ } else { ++ error = fprintf(nmfile, "\n[ipv4]\n"); ++ if (error < 0) ++ goto setval_error; ++ } ++ ++ /* ++ * Now we populate the keyfile format ++ */ ++ ++ if (new_val->dhcp_enabled) { ++ error = kvp_write_file(nmfile, "method", "", "auto"); ++ if (error < 0) ++ goto setval_error; ++ } else { ++ error = kvp_write_file(nmfile, "method", "", "manual"); ++ if (error < 0) ++ goto setval_error; ++ } ++ ++ /* ++ * Write the configuration for ipaddress, netmask, gateway and ++ * name services ++ */ ++ error = process_ip_string_nm(nmfile, (char *)new_val->ip_addr, ++ (char *)new_val->sub_net, is_ipv6); ++ if (error < 0) ++ goto setval_error; ++ ++ error = fprintf(nmfile, "gateway=%s\n", (char *)new_val->gate_way); ++ if (error < 0) ++ goto setval_error; ++ ++ error = fprintf(nmfile, "dns=%s\n", (char *)new_val->dns_addr); ++ if (error < 0) ++ goto setval_error; ++ ++ fclose(nmfile); ++ fclose(ifcfg_file); + + /* + * Now that we have populated the configuration file, + * invoke the external script to do its magic. + */ + +- str_len = snprintf(cmd, sizeof(cmd), KVP_SCRIPTS_PATH "%s %s", +- "hv_set_ifconfig", if_file); ++ str_len = snprintf(cmd, sizeof(cmd), KVP_SCRIPTS_PATH "%s %s %s", ++ "hv_set_ifconfig", if_filename, nm_filename); + /* + * This is a little overcautious, but it's necessary to suppress some + * false warnings from gcc 8.0.1. +@@ -1316,14 +1485,16 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) + + if (system(cmd)) { + syslog(LOG_ERR, "Failed to execute cmd '%s'; error: %d %s", +- cmd, errno, strerror(errno)); ++ cmd, errno, strerror(errno)); + return HV_E_FAIL; + } + return 0; +- ++setmac_error: ++ free(mac_addr); + setval_error: + syslog(LOG_ERR, "Failed to write config file"); +- fclose(file); ++ fclose(ifcfg_file); ++ fclose(nmfile); + return error; + } + +diff --git a/hv_set_ifconfig.sh b/hv_set_ifconfig.sh +index fe7fccf..35aae6f 100644 +--- a/hv_set_ifconfig.sh ++++ b/hv_set_ifconfig.sh +@@ -18,12 +18,12 @@ + # + # This example script is based on a RHEL environment. + # +-# Here is the format of the ip configuration file: ++# Here is the ifcfg format of the ip configuration file: + # + # HWADDR=macaddr + # DEVICE=interface name + # BOOTPROTO= (where is "dhcp" if DHCP is configured +-# or "none" if no boot-time protocol should be used) ++# or "none" if no boot-time protocol should be used) + # + # IPADDR0=ipaddr1 + # IPADDR1=ipaddr2 +@@ -41,6 +41,32 @@ + # tagged as IPV6_DEFAULTGW and IPV6 NETMASK will be tagged as + # IPV6NETMASK. + # ++# Here is the keyfile format of the ip configuration file: ++# ++# [ethernet] ++# mac-address=macaddr ++# [connection] ++# interface-name=interface name ++# ++# [ipv4] ++# method= (where is "auto" if DHCP is configured ++# or "manual" if no boot-time protocol should be used) ++# ++# address1=ipaddr1/plen ++# address=ipaddr2/plen ++# ++# gateway=gateway1;gateway2 ++# ++# dns=dns1; ++# ++# [ipv6] ++# address1=ipaddr1/plen ++# address2=ipaddr1/plen ++# ++# gateway=gateway1;gateway2 ++# ++# dns=dns1;dns2 ++# + # The host can specify multiple ipv4 and ipv6 addresses to be + # configured for the interface. Furthermore, the configuration + # needs to be persistent. A subsequent GET call on the interface +-- +2.41.0 + diff --git a/hyperv-daemons.spec b/hyperv-daemons.spec index e63dc3b..51f65ee 100644 --- a/hyperv-daemons.spec +++ b/hyperv-daemons.spec @@ -13,7 +13,7 @@ Name: hyperv-daemons Version: 0 -Release: 0.34%{?snapver}%{?dist} +Release: 1.34%{?snapver}%{?dist} Summary: Hyper-V daemons suite Group: System Environment/Daemons @@ -72,6 +72,12 @@ Patch10: hpvd-redhat-hv_set_if_config-Workaround-for-gateway-numbe.patch Patch11: hpvd-tools-hv-Remove-an-extraneous-the.patch # For bz#2139456 - [Hyper-V][RHEL8.8] Update Hyper-V-Daemons Patch12: hpvd-tools-hv-kvp-remove-unnecessary-void-conversions.patch +# For RHEL-9901 - [Hyper-V][RHEL-8] hyperv-daemons write incompatible IPv6 prefix (IPV6NETMASK) in connection configuration +Patch13: hpvd-hv-hv_kvp_daemon-Support-for-keyfile-based-connectio.patch +# For RHEL-9901 - [Hyper-V][RHEL-8] hyperv-daemons write incompatible IPv6 prefix (IPV6NETMASK) in connection configuration +Patch14: hpvd-hv-hv_kvp_daemon-Some-small-fixes-for-handling-NM-ke.patch +# For RHEL-9901 - [Hyper-V][RHEL-8] hyperv-daemons write incompatible IPv6 prefix (IPV6NETMASK) in connection configuration +Patch15: hpvd-Changes-for-adding-keyfile-support-in-RHEL-specific-.patch # For bz#2020141 - [Hyper-V][RHEL8.6][ARM64] No hyperv-daemons package built for aarch64 platform # Patch6: hpvd-Enable-build-on-aarch64.patch @@ -191,6 +197,9 @@ cp -pvL %{SOURCE4} hv_set_ifconfig.sh %patch10 -p1 %patch11 -p1 %patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 %build # HYPERV KVP DAEMON @@ -308,6 +317,13 @@ fi %{_sbindir}/vmbus_testing %changelog +* Thu Dec 21 2023 Jon Maloy - 0-1.34.20180415git +- hpvd-hv-hv_kvp_daemon-Support-for-keyfile-based-connectio.patch [RHEL-9901] +- hpvd-hv-hv_kvp_daemon-Some-small-fixes-for-handling-NM-ke.patch [RHEL-9901] +- hpvd-Changes-for-adding-keyfile-support-in-RHEL-specific-.patch [RHEL-9901] +- Resolves: RHEL-9901 + ([Hyper-V][RHEL-8] hyperv-daemons write incompatible IPv6 prefix (IPV6NETMASK) in connection configuration) + * Fri Dec 02 2022 Jon Maloy - 0-0.34.20180415git - hpvd-redhat-hv_set_if_config-Workaround-for-gateway-numbe.patch [bz#2142028] - hpvd-tools-hv-Remove-an-extraneous-the.patch [bz#2139456]