[syslinux:master] efi/udp: Add retry disabling UseDefaultAddress

syslinux-bot for Julien Viard de Galbert jviarddegalbert at online.net
Wed May 31 03:57:06 PDT 2017


Commit-ID:  828a75d005daf87707e883f04909282efb3e764a
Gitweb:     http://www.syslinux.org/commit/828a75d005daf87707e883f04909282efb3e764a
Author:     Julien Viard de Galbert <jviarddegalbert at online.net>
AuthorDate: Wed, 31 May 2017 06:50:53 -0400
Committer:  Gene Cumm <gene.cumm at gmail.com>
CommitDate: Wed, 31 May 2017 06:50:58 -0400

efi/udp: Add retry disabling UseDefaultAddress

Add retry disabling UseDefaultAddress in core_udp_connect() and
core_udp_sendto()

Signed-off-by: Julien Viard de Galbert <jviarddegalbert at online.net>
Signed-off-by: Gene Cumm <gene.cumm at gmail.com>

---
 efi/udp.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/efi/udp.c b/efi/udp.c
index b0f13ad..1b787e5 100644
--- a/efi/udp.c
+++ b/efi/udp.c
@@ -158,6 +158,7 @@ void core_udp_connect(struct pxe_pvt_inode *socket, uint32_t ip,
     /* Re-use the existing local port number */
     udata.StationPort = socket->net.efi.localport;
 
+retry:
     if (efi_net_def_addr) {
 	udata.UseDefaultAddress = TRUE;
     } else {
@@ -170,6 +171,11 @@ void core_udp_connect(struct pxe_pvt_inode *socket, uint32_t ip,
     udata.TimeToLive = 64;
 
     status = core_udp_configure(udp, &udata, L"core_udp_connect");
+    if (efi_net_def_addr && (status == EFI_NO_MAPPING)) {
+	efi_net_def_addr = 0;
+	Print(L"disable UseDefaultAddress\n");
+	goto retry;
+    }
     if (status != EFI_SUCCESS) {
 	Print(L"Failed to configure UDP: %d\n", status);
 	return;
@@ -392,6 +398,7 @@ void core_udp_sendto(struct pxe_pvt_inode *socket, const void *data,
     /* Re-use the existing local port number */
     udata.StationPort = socket->net.efi.localport;
 
+retry:
     if (efi_net_def_addr) {
 	udata.UseDefaultAddress = TRUE;
     } else {
@@ -404,6 +411,11 @@ void core_udp_sendto(struct pxe_pvt_inode *socket, const void *data,
     udata.TimeToLive = 64;
 
     status = core_udp_configure(udp, &udata, L"core_udp_sendto");
+    if (efi_net_def_addr && (status == EFI_NO_MAPPING)) {
+	efi_net_def_addr = 0;
+	Print(L"disable UseDefaultAddress\n");
+	goto retry;
+    }
     if (status != EFI_SUCCESS)
 	goto bail;
 


More information about the Syslinux-commits mailing list