summaryrefslogtreecommitdiff
path: root/networking/udhcp/common.h
diff options
context:
space:
mode:
authorMichal Kazior <michal@plume.com>2020-12-15 09:53:40 +0000
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-15 21:44:21 +0100
commitb817699e6c5c8efe4fce45e910d66133c9d8c482 (patch)
treeea4ad25a0ca09d8b5e1e7853bc52b85d94bf64bf /networking/udhcp/common.h
parent01004f9796fd7a5223a40802026d2023e3f9cf28 (diff)
downloadbusybox-w32-b817699e6c5c8efe4fce45e910d66133c9d8c482.tar.gz
busybox-w32-b817699e6c5c8efe4fce45e910d66133c9d8c482.tar.bz2
busybox-w32-b817699e6c5c8efe4fce45e910d66133c9d8c482.zip
udhcp: bind to device even for ucast packets
There are cases where binding to source IP and destination IP is insufficient to guarantee sane xmit netdev. One case where this can fail is when route-matching netdev carrier is down (cable unplugged, wifi disconnected), or the netdev is admin down. Then all the IP based bindings (bind() + connect()) will seemingly succeed but the actual packet can go out through a default gw path. Depending on the network this happens on it can create issues or false alarms. It can also leak some subnet info across networks that shouldn't be routed. As such better be safe than sorry and bind to a netdev to be sure it's used for xmit. function old new delta udhcp_send_kernel_packet 293 336 +43 send_packet 182 188 +6 bcast_or_ucast 37 43 +6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 55/0) Total: 55 bytes Signed-off-by: Michal Kazior <michal@plume.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/udhcp/common.h')
-rw-r--r--networking/udhcp/common.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
index 3cbd2d3c8..cc0abd269 100644
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -343,7 +343,8 @@ int udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
343 343
344int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, 344int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
345 uint32_t source_nip, int source_port, 345 uint32_t source_nip, int source_port,
346 uint32_t dest_nip, int dest_port) FAST_FUNC; 346 uint32_t dest_nip, int dest_port,
347 const char *ifname) FAST_FUNC;
347 348
348void udhcp_sp_setup(void) FAST_FUNC; 349void udhcp_sp_setup(void) FAST_FUNC;
349void udhcp_sp_fd_set(struct pollfd *pfds, int extra_fd) FAST_FUNC; 350void udhcp_sp_fd_set(struct pollfd *pfds, int extra_fd) FAST_FUNC;