Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89015c18 authored by dingtianhong's avatar dingtianhong Committed by David S. Miller
Browse files

bonding: add arp_ip_target checks when install the module



When I install the bonding with the wrong arp_ip_target,
just like arp_ip_target=500.500.500.500, the arp_ip_target
was transfored to 245.245.245.244 and stored in the ip
target success, it is uncorrect, so I add checks to avoid
adding wrong address.

The in4_pton() will set wrong ip address to 0.0.0.0 and
return 0, also use the micro IS_IP_TARGET_UNUSABLE_ADDRESS
to simplify the code.

Signed-off-by: default avatarDing Tianhong <dingtianhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c8781cf4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -4199,9 +4199,9 @@ static int bond_check_params(struct bond_params *params)
	     (arp_ip_count < BOND_MAX_ARP_TARGETS) && arp_ip_target[i]; i++) {
		/* not complete check, but should be good enough to
		   catch mistakes */
		__be32 ip = in_aton(arp_ip_target[i]);
		if (!isdigit(arp_ip_target[i][0]) || ip == 0 ||
		    ip == htonl(INADDR_BROADCAST)) {
		__be32 ip;
		if (!in4_pton(arp_ip_target[i], -1, (u8 *)&ip, -1, NULL) ||
		    IS_IP_TARGET_UNUSABLE_ADDRESS(ip)) {
			pr_warning("Warning: bad arp_ip_target module parameter (%s), ARP monitoring will not be performed\n",
				   arp_ip_target[i]);
			arp_interval = 0;