aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/common.h
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-09-29 15:55:24 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-09-29 16:02:11 +0200
commita6a3ad327360669e0c12552f680382e3b9713489 (patch)
tree7dcfc65aa41e6f0f22e5b6631c35dbae8b99052f /networking/udhcp/common.h
parent2b9acc60c0468379cd24d13bc9e3f3e50761c0c9 (diff)
downloadbusybox-w32-a6a3ad327360669e0c12552f680382e3b9713489.tar.gz
busybox-w32-a6a3ad327360669e0c12552f680382e3b9713489.tar.bz2
busybox-w32-a6a3ad327360669e0c12552f680382e3b9713489.zip
udhcpc: paranoia when using kernel UDP mode for sending renew: server ID may be bogus
With new code, we request that target IP (server ID) must be directly reachable. If it's not, this happens: udhcpc: waiting 2000 seconds udhcpc: entering listen mode: kernel udhcpc: opening listen socket on *:68 wlan0 udhcpc: entering renew state udhcpc: sending renew to 1.1.1.1 udhcpc: send: Network is unreachable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.1.1.1 needs routing, this is fishy! udhcpc: entering rebinding state udhcpc: entering listen mode: raw udhcpc: created raw socket udhcpc: sending renew to 0.0.0.0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ going to use broadcast which is the desired behavior. Before the patch, packet to 1.1.1.1 was routed over eth0 (!) and maybe even into Internet (!!!). function old new delta udhcpc_main 2752 2763 +11 udhcp_send_kernel_packet 295 301 +6 send_renew 82 84 +2 send_packet 166 168 +2 bcast_or_ucast 23 25 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 23/0) Total: 23 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/udhcp/common.h')
-rw-r--r--networking/udhcp/common.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
index a9c23a186..04939e707 100644
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -308,7 +308,9 @@ int udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
308 308
309int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, 309int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
310 uint32_t source_nip, int source_port, 310 uint32_t source_nip, int source_port,
311 uint32_t dest_nip, int dest_port) FAST_FUNC; 311 uint32_t dest_nip, int dest_port,
312 int send_flags
313) FAST_FUNC;
312 314
313void udhcp_sp_setup(void) FAST_FUNC; 315void udhcp_sp_setup(void) FAST_FUNC;
314void udhcp_sp_fd_set(struct pollfd *pfds, int extra_fd) FAST_FUNC; 316void udhcp_sp_fd_set(struct pollfd *pfds, int extra_fd) FAST_FUNC;