aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/dhcpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/udhcp/dhcpd.c')
-rw-r--r--networking/udhcp/dhcpd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index b67dfc3bc..0f5edb75c 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -614,6 +614,10 @@ static void send_packet_to_relay(struct dhcp_packet *dhcp_pkt)
614 udhcp_send_kernel_packet(dhcp_pkt, 614 udhcp_send_kernel_packet(dhcp_pkt,
615 server_data.server_nip, SERVER_PORT, 615 server_data.server_nip, SERVER_PORT,
616 dhcp_pkt->gateway_nip, SERVER_PORT, 616 dhcp_pkt->gateway_nip, SERVER_PORT,
617 /* Yes, relay agents receive (and send) all their packets on SERVER_PORT,
618 * even those which are clients' requests and would normally
619 * (i.e. without relay) use CLIENT_PORT. See RFC 1542.
620 */
617 server_data.interface); 621 server_data.interface);
618} 622}
619 623
@@ -1025,6 +1029,9 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
1025 * socket read inside this call is restarted on caught signals. 1029 * socket read inside this call is restarted on caught signals.
1026 */ 1030 */
1027 bytes = udhcp_recv_kernel_packet(&packet, server_socket); 1031 bytes = udhcp_recv_kernel_packet(&packet, server_socket);
1032//NB: we do not check source port here. Should we?
1033//It should be CLIENT_PORT for clients,
1034//or SERVER_PORT for relay agents (in which case giaddr must be != 0.0.0.0)
1028 if (bytes < 0) { 1035 if (bytes < 0) {
1029 /* bytes can also be -2 ("bad packet data") */ 1036 /* bytes can also be -2 ("bad packet data") */
1030 if (bytes == -1 && errno != EINTR) { 1037 if (bytes == -1 && errno != EINTR) {