From: tzachid Date: Sun, 28 Jun 2009 10:08:39 +0000 (+0000) Subject: [IPOIB] IPoIB PXE boot support: Filter proxy DHCP requests too. X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=7e271194ab10bf972e5488a5cc71e341707a31cf;p=~shefty%2Frdma-win.git [IPOIB] IPoIB PXE boot support: Filter proxy DHCP requests too. Signed off by: ftillier@windows.microsoft.com git-svn-id: svn://openib.tc.cornell.edu/gen1@2273 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/inc/kernel/ip_packet.h b/trunk/inc/kernel/ip_packet.h index a7129380..12fdb351 100644 --- a/trunk/inc/kernel/ip_packet.h +++ b/trunk/inc/kernel/ip_packet.h @@ -432,6 +432,7 @@ typedef struct _igmp_v2_hdr #define DHCP_PORT_SERVER CL_HTON16(67) #define DHCP_PORT_CLIENT CL_HTON16(68) +#define DHCP_PORT_PROXY_SERVER CL_HTON16(4011) #define DHCP_REQUEST 1 #define DHCP_REPLY 2 diff --git a/trunk/ulp/ipoib/kernel/ipoib_port.c b/trunk/ulp/ipoib/kernel/ipoib_port.c index ff7ff5ba..76a0140e 100644 --- a/trunk/ulp/ipoib/kernel/ipoib_port.c +++ b/trunk/ulp/ipoib/kernel/ipoib_port.c @@ -2072,7 +2072,11 @@ __recv_mgr_filter( if( (p_ipoib->type.ip.prot.udp.hdr.dst_port == DHCP_PORT_SERVER && p_ipoib->type.ip.prot.udp.hdr.src_port == DHCP_PORT_CLIENT) || (p_ipoib->type.ip.prot.udp.hdr.dst_port == DHCP_PORT_CLIENT && - p_ipoib->type.ip.prot.udp.hdr.src_port == DHCP_PORT_SERVER) ) + p_ipoib->type.ip.prot.udp.hdr.src_port == DHCP_PORT_SERVER) || + (p_ipoib->type.ip.prot.udp.hdr.dst_port == DHCP_PORT_PROXY_SERVER && + p_ipoib->type.ip.prot.udp.hdr.src_port == DHCP_PORT_CLIENT) || + (p_ipoib->type.ip.prot.udp.hdr.dst_port == DHCP_PORT_CLIENT && + p_ipoib->type.ip.prot.udp.hdr.src_port == DHCP_PORT_PROXY_SERVER) ) { if( len < (sizeof(ipoib_hdr_t) + sizeof(ip_hdr_t) + sizeof(udp_hdr_t) + DHCP_MIN_SIZE) ) @@ -2256,7 +2260,7 @@ __recv_dhcp( return IB_INVALID_PARAMETER; } - p_option = &p_dhcp->options[4]; + p_option = &p_dhcp->options[DHCP_COOKIE_SIZE]; while( *p_option != DHCP_OPT_END && p_option < &p_dhcp->options[312] ) { switch( *p_option )