diff options
author | Julien Viard de Galbert <jviarddegalbert@online.net> | 2017-05-31 06:50:53 -0400 |
---|---|---|
committer | Gene Cumm <gene.cumm@gmail.com> | 2017-05-31 06:50:58 -0400 |
commit | 828a75d005daf87707e883f04909282efb3e764a (patch) | |
tree | 995a82d146953bdda7f184170e18fd59538687d3 | |
parent | 8a0d48421413f20dc400c58c7e4e7b9ec8d9bc78 (diff) | |
download | syslinux-828a75d005daf87707e883f04909282efb3e764a.tar.gz syslinux-828a75d005daf87707e883f04909282efb3e764a.tar.xz syslinux-828a75d005daf87707e883f04909282efb3e764a.zip |
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@online.net>
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
-rw-r--r-- | efi/udp.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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; |