From 258534718910c903451f1fe2e8fe1197c224c8e7 Mon Sep 17 00:00:00 2001 From: Stavros Passas Date: Fri, 20 Jan 2017 09:22:46 +0000 Subject: network: Fix DHCP client protocol Close #2877. --- cpukit/libnetworking/nfs/bootp_subr.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'cpukit/libnetworking/nfs/bootp_subr.c') diff --git a/cpukit/libnetworking/nfs/bootp_subr.c b/cpukit/libnetworking/nfs/bootp_subr.c index 3e71e95e08..b24ba945e7 100644 --- a/cpukit/libnetworking/nfs/bootp_subr.c +++ b/cpukit/libnetworking/nfs/bootp_subr.c @@ -284,7 +284,9 @@ int bootpc_call( struct bootp_packet *call, struct bootp_packet *reply, /* output */ - struct proc *procp) + struct proc *procp, + const void *exp_vend, + size_t exp_vend_len) { struct socket *so; struct sockaddr_in *sin; @@ -450,6 +452,9 @@ bootpc_call( if (bcmp(reply->chaddr,call->chaddr,call->hlen)) continue; + if (exp_vend_len > 0 && bcmp(exp_vend, reply->vend, exp_vend_len)) + continue; + goto gotreply; /* break two levels */ } /* while secs */ @@ -1051,7 +1056,7 @@ bootpc_init(bool update_files, bool forever) call.secs = 0; call.flags = htons(0x8000); /* We need an broadcast answer */ - error = bootpc_call(&call,&reply,procp); + error = bootpc_call(&call,&reply,procp, NULL, 0); if (!error) break; -- cgit v1.2.3