busybox: udhcpc: replace udhcpc_no_msg_dontroute patch by upstream fix
Replace 204-udhcpc_no_msg_dontroute patch by the upstream busybox fix which removes the code which requires the server ID to be on local network Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
This commit is contained in:
		| @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=busybox | PKG_NAME:=busybox | ||||||
| PKG_VERSION:=1.28.4 | PKG_VERSION:=1.28.4 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=2 | ||||||
| PKG_FLAGS:=essential | PKG_FLAGS:=essential | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | ||||||
|   | |||||||
| @@ -1,11 +0,0 @@ | |||||||
| --- a/networking/udhcp/dhcpc.c |  | ||||||
| +++ b/networking/udhcp/dhcpc.c |  | ||||||
| @@ -700,7 +700,7 @@ |  | ||||||
|  		return udhcp_send_kernel_packet(packet, |  | ||||||
|  			ciaddr, CLIENT_PORT, |  | ||||||
|  			server, SERVER_PORT, |  | ||||||
| -			/*send_flags: "to hosts only on directly connected networks" */ MSG_DONTROUTE |  | ||||||
| +			0 /*Was MSG_DONTROUTE here. It prevented unicast renewal requests to server in different subnet*/ |  | ||||||
|  		); |  | ||||||
|  	} |  | ||||||
|  	return raw_bcast_from_client_config_ifindex(packet, ciaddr); |  | ||||||
| @@ -0,0 +1,117 @@ | |||||||
|  | From 148788eb0ee96026105755cf3fd1ad3d94f49cd2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Denys Vlasenko <vda.linux@googlemail.com> | ||||||
|  | Date: Thu, 21 Jun 2018 17:36:22 +0200 | ||||||
|  | Subject: [PATCH] udhcpc: remove code which requires server ID to be on local | ||||||
|  |  network | ||||||
|  |  | ||||||
|  | This reverts "udhcpc: paranoia when using kernel UDP mode | ||||||
|  | for sending renew: server ID may be bogus". | ||||||
|  |  | ||||||
|  | Users complain that they do have servers behind routers | ||||||
|  | (with DHCP relays). | ||||||
|  |  | ||||||
|  | function                                             old     new   delta | ||||||
|  | send_packet                                          168     166      -2 | ||||||
|  | bcast_or_ucast                                        25      23      -2 | ||||||
|  | udhcp_send_kernel_packet                             301     295      -6 | ||||||
|  | ------------------------------------------------------------------------------ | ||||||
|  | (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-10)             Total: -10 bytes | ||||||
|  |  | ||||||
|  | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> | ||||||
|  | --- | ||||||
|  |  networking/udhcp/common.h   |  4 +--- | ||||||
|  |  networking/udhcp/d6_dhcpc.c |  4 +--- | ||||||
|  |  networking/udhcp/dhcpc.c    | 10 ++-------- | ||||||
|  |  networking/udhcp/dhcpd.c    |  4 +--- | ||||||
|  |  networking/udhcp/packet.c   |  7 +++---- | ||||||
|  |  5 files changed, 8 insertions(+), 21 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/networking/udhcp/common.h | ||||||
|  | +++ b/networking/udhcp/common.h | ||||||
|  | @@ -308,9 +308,7 @@ int udhcp_send_raw_packet(struct dhcp_pa | ||||||
|  |   | ||||||
|  |  int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, | ||||||
|  |  		uint32_t source_nip, int source_port, | ||||||
|  | -		uint32_t dest_nip, int dest_port, | ||||||
|  | -		int send_flags | ||||||
|  | -) FAST_FUNC; | ||||||
|  | +		uint32_t dest_nip, int dest_port) FAST_FUNC; | ||||||
|  |   | ||||||
|  |  void udhcp_sp_setup(void) FAST_FUNC; | ||||||
|  |  void udhcp_sp_fd_set(struct pollfd *pfds, int extra_fd) FAST_FUNC; | ||||||
|  | --- a/networking/udhcp/d6_dhcpc.c | ||||||
|  | +++ b/networking/udhcp/d6_dhcpc.c | ||||||
|  | @@ -702,15 +702,13 @@ static NOINLINE int send_d6_renew(uint32 | ||||||
|  |  	opt_ptr = add_d6_client_options(opt_ptr); | ||||||
|  |   | ||||||
|  |  	bb_error_msg("sending %s", "renew"); | ||||||
|  | -	if (server_ipv6) { | ||||||
|  | +	if (server_ipv6) | ||||||
|  |  		return d6_send_kernel_packet( | ||||||
|  |  			&packet, (opt_ptr - (uint8_t*) &packet), | ||||||
|  |  			our_cur_ipv6, CLIENT_PORT6, | ||||||
|  |  			server_ipv6, SERVER_PORT6, | ||||||
|  |  			client_config.ifindex | ||||||
|  | -			/* TODO? send_flags: MSG_DONTROUTE (see IPv4 code for reason why) */ | ||||||
|  |  		); | ||||||
|  | -	} | ||||||
|  |  	return d6_mcast_from_client_config_ifindex(&packet, opt_ptr); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | --- a/networking/udhcp/dhcpc.c | ||||||
|  | +++ b/networking/udhcp/dhcpc.c | ||||||
|  | @@ -693,16 +693,10 @@ static int raw_bcast_from_client_config_ | ||||||
|  |   | ||||||
|  |  static int bcast_or_ucast(struct dhcp_packet *packet, uint32_t ciaddr, uint32_t server) | ||||||
|  |  { | ||||||
|  | -	if (server) { | ||||||
|  | -		/* Without MSG_DONTROUTE, the packet was seen routed over | ||||||
|  | -		 * _other interface_ if server ID is bogus (example: 1.1.1.1). | ||||||
|  | -		 */ | ||||||
|  | +	if (server) | ||||||
|  |  		return udhcp_send_kernel_packet(packet, | ||||||
|  |  			ciaddr, CLIENT_PORT, | ||||||
|  | -			server, SERVER_PORT, | ||||||
|  | -			/*send_flags: "to hosts only on directly connected networks" */ MSG_DONTROUTE | ||||||
|  | -		); | ||||||
|  | -	} | ||||||
|  | +			server, SERVER_PORT); | ||||||
|  |  	return raw_bcast_from_client_config_ifindex(packet, ciaddr); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | --- a/networking/udhcp/dhcpd.c | ||||||
|  | +++ b/networking/udhcp/dhcpd.c | ||||||
|  | @@ -588,9 +588,7 @@ static void send_packet_to_relay(struct | ||||||
|  |   | ||||||
|  |  	udhcp_send_kernel_packet(dhcp_pkt, | ||||||
|  |  			server_config.server_nip, SERVER_PORT, | ||||||
|  | -			dhcp_pkt->gateway_nip, SERVER_PORT, | ||||||
|  | -			/*send_flags:*/ 0 | ||||||
|  | -	); | ||||||
|  | +			dhcp_pkt->gateway_nip, SERVER_PORT); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static void send_packet(struct dhcp_packet *dhcp_pkt, int force_broadcast) | ||||||
|  | --- a/networking/udhcp/packet.c | ||||||
|  | +++ b/networking/udhcp/packet.c | ||||||
|  | @@ -189,8 +189,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru | ||||||
|  |  /* Let the kernel do all the work for packet generation */ | ||||||
|  |  int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, | ||||||
|  |  		uint32_t source_nip, int source_port, | ||||||
|  | -		uint32_t dest_nip, int dest_port, | ||||||
|  | -		int send_flags) | ||||||
|  | +		uint32_t dest_nip, int dest_port) | ||||||
|  |  { | ||||||
|  |  	struct sockaddr_in sa; | ||||||
|  |  	unsigned padding; | ||||||
|  | @@ -227,8 +226,8 @@ int FAST_FUNC udhcp_send_kernel_packet(s | ||||||
|  |  	padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options); | ||||||
|  |  	if (padding > DHCP_SIZE - 300) | ||||||
|  |  		padding = DHCP_SIZE - 300; | ||||||
|  | -	result = send(fd, dhcp_pkt, DHCP_SIZE - padding, send_flags); | ||||||
|  | -	msg = "send"; | ||||||
|  | +	result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding); | ||||||
|  | +	msg = "write"; | ||||||
|  |   ret_close: | ||||||
|  |  	close(fd); | ||||||
|  |  	if (result < 0) { | ||||||
		Reference in New Issue
	
	Block a user
	 Hans Dedecker
					Hans Dedecker