-diff -up dhcp-4.2.4b1/server/bootp.c.unicast dhcp-4.2.4b1/server/bootp.c
---- dhcp-4.2.4b1/server/bootp.c.unicast 2012-04-10 23:27:06.000000000 +0200
-+++ dhcp-4.2.4b1/server/bootp.c 2012-04-16 17:28:42.095919022 +0200
-@@ -59,6 +59,7 @@ void bootp (packet)
+diff -up dhcp-4.3.4/server/bootp.c.unicast dhcp-4.3.4/server/bootp.c
+--- dhcp-4.3.4/server/bootp.c.unicast 2016-03-22 14:16:51.000000000 +0100
++++ dhcp-4.3.4/server/bootp.c 2016-05-02 15:09:40.023243008 +0200
+@@ -52,6 +52,7 @@ void bootp (packet)
char msgbuf [1024];
int ignorep;
int peer_has_leases = 0;
if (packet -> raw -> op != BOOTREQUEST)
return;
-@@ -74,7 +75,7 @@ void bootp (packet)
+@@ -67,7 +68,7 @@ void bootp (packet)
? inet_ntoa (packet -> raw -> giaddr)
: packet -> interface -> name);
log_info ("%s: network unknown", msgbuf);
return;
}
-@@ -399,6 +400,15 @@ void bootp (packet)
+@@ -428,6 +429,15 @@ void bootp (packet)
goto out;
}
/* If it comes from a client that already knows its address
and is not requesting a broadcast response, and we can
-diff -up dhcp-4.2.4b1/server/dhcp.c.unicast dhcp-4.2.4b1/server/dhcp.c
---- dhcp-4.2.4b1/server/dhcp.c.unicast 2012-03-09 12:28:12.000000000 +0100
-+++ dhcp-4.2.4b1/server/dhcp.c 2012-04-16 17:26:55.067418285 +0200
-@@ -4299,6 +4299,7 @@ int locate_network (packet)
+diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
+--- dhcp-4.3.4/server/dhcp.c.unicast 2016-03-22 14:16:51.000000000 +0100
++++ dhcp-4.3.4/server/dhcp.c 2016-05-02 15:10:13.255267511 +0200
+@@ -5132,6 +5132,7 @@ int locate_network (packet)
struct data_string data;
struct subnet *subnet = (struct subnet *)0;
struct option_cache *oc;
+ int norelay = 0;
- /* See if there's a Relay Agent Link Selection Option, or a
- * Subnet Selection Option. The Link-Select and Subnet-Select
-@@ -4314,12 +4315,24 @@ int locate_network (packet)
+ #if defined(DHCPv6) && defined(DHCP4o6)
+ if (dhcpv4_over_dhcpv6 && (packet->dhcp4o6_response != NULL)) {
+@@ -5153,12 +5154,24 @@ int locate_network (packet)
from the interface, if there is one. If not, fail. */
if (!oc && !packet -> raw -> giaddr.s_addr) {
if (packet -> interface -> shared_network) {
}
/* If there's an option indicating link connection, and it's valid,
-@@ -4342,7 +4355,10 @@ int locate_network (packet)
+@@ -5185,7 +5198,10 @@ int locate_network (packet)
data_string_forget (&data, MDL);
} else {
ia.len = 4;
}
/* If we know the subnet on which the IP address lives, use it. */
-@@ -4350,7 +4366,10 @@ int locate_network (packet)
+@@ -5193,7 +5209,10 @@ int locate_network (packet)
shared_network_reference (&packet -> shared_network,
subnet -> shared_network, MDL);
subnet_dereference (&subnet, MDL);