Brian Rak | 18 Sep 21:29 2014

Unable to boot FreeBSD with HTTPS support enabled

This is a weird one..

I recently started compiling with HTTPS support enabled.  Once I did 
that, I was no longer able to boot FreeBSD cleanly.  If I disable HTTPS 
support, FreeBSD boots fine again.

I'm using this as a test:

sanboot http://mfsbsd.vx.sk/files/iso/10/amd64/mfsbsd-10.0-RELEASE-amd64.iso

With HTTPS enabled, this will hang on the bootloader prompt (it should 
auto-boot after 10 seconds, it does not).  With HTTPS disabled, this 
boots fine.

I've checked this against 93acb5d8d0635b8f7726bd993cde4a90a6b1d723 
(super-old, but known good booting FreeBSD) and 
0df7ce96416872931fc7fd3d90dc5781944d41a9 (current HEAD).

Is there anything I can do here?
Alex Williamson | 17 Sep 17:38 2014
Picon

[RE-RESEND PATCH] [dhcp] More spec compliant DHCP/PXE timeouts

For discovery, both the DHCP and PXE specs suggest timeouts of 4, 8,
16, and 32 seconds.  This gives us a maximum timeout of 60 seconds,
versus the current timeout of 15 seconds at timeouts of 1, 2, 4, and
8 seconds.

On the request phase, the specs are quite different.  RFC2131 for DHCP
suggests the same intervals as above for discovery, while the PXE spec
recommends intervals of 1, 2, 3, and 4 seconds.  Our timer only wants
to do exponential back-off, so we compromise and adjust to intervals
of 1, 2, 4, and 8 seconds.  PXE boot server discovery appears to want
the same timeouts as the DHCP request phase.

Signed-off-by: Alex Williamson <alex.williamson@...>
---

This continues to be a problem that customer complain about.  The
xNBA version of ipxe has already included this commit [1][2].  Others
have also expressed support for this patch in the past [3].  Previous
postings of this patch can be found here [4][5].  I understand the
reluctance to increase the timeout, but the benefit is that ipxe can
work more reliably for more users, which seems worthwhile.

[1] http://lists.ipxe.org/pipermail/ipxe-devel/2014-March/003223.html
[2] http://sourceforge.net/p/xcat/xnba/ci/fea8166abfa856884792021d61d4095ebd00a984/
[3] http://lists.ipxe.org/pipermail/ipxe-devel/2013-June/002576.html
[4] http://lists.ipxe.org/pipermail/ipxe-devel/2014-February/003156.html
[5] http://lists.ipxe.org/pipermail/ipxe-devel/2013-June/002573.html

 src/include/ipxe/dhcp.h |    4 ----
 src/net/udp/dhcp.c      |   22 +++++++++++++---------
(Continue reading)

Rémi Palancher | 16 Sep 20:15 2014

Feedback of tests iPXE with UEFI

Hi developers,

I'm giving a try to iPXE for booting RHEL installer (versions 6.5 and 7.0) on
UEFI based server (IBM System x3550 M4) with Intel 8086:1521 Gigabit Ethernet
controllers.

So I compiled iPXE EFI image for this controller:

  $ make bin-x86_64-efi/80861521.efi

This image is downloaded by the server through TFTP and then it downloads the
following iPXE config through HTTP:

#!ipxe
initrd http://10.89.89.60/disk/rhel6.5/initrd.img
kernel http://10.89.89.60/disk/rhel6.5/vmlinuz
boot

Both the kernel and the initrd are those officially delivered by RedHat in
their ISO (in images/pxeboot/ directory).

But unfortunately, it finally hangs on these errors:

http://10.89.89.60/disk/rhel6.5/initrd.img... ok
http://10.89.89.60/disk/rhel6.5/vmlinuz... ok
Could not select: Exec format error (http://ipxe.org/2e008081)
Could not boot image: Exec format error (http://ipxe.org/2e008081)
No more network devices

(yep, I gave a look to the provided URL and checked the common errors.)
(Continue reading)

Sky Gayak | 14 Sep 14:45 2014
Picon

Regarding error code 1d704039

Hello,

I am trying to boot my home system using synology nas iscsi target.
I setup all the script and webserver for wimboot. Now i want to install
os on my iscsi target, so onwords the system will boot with ipxe using iscsi boot.

For this I made a LUN-1 in Synology nas with iqn "d1".
I am trying the command " sanhook iscsi:192.168.1.1:::1:d1 "
I am getting error as
" could not open SAN device: Input /output error (http://ipxe.org/1d704039) "

The same iscsi drive can be connected by using windows iscsi initiator and works fine.

Kindly help, which thing I am doing wrong.

Thanking you.


Vaibhav.
<div><div dir="ltr">Hello,<div><br></div>
<div>I am trying to boot my home system using synology nas iscsi target.</div>
<div>I setup all the script and webserver for wimboot. Now i want to install</div>
<div>os on my iscsi target, so onwords the system will boot with ipxe using iscsi boot.</div>
<div><br></div>
<div>For this I made a LUN-1 in Synology nas with iqn "d1".</div>
<div>I am trying the command " sanhook iscsi:192.168.1.1:::1:d1 "</div>
<div>I am getting error as</div>
<div>" could not open SAN device: Input /output error (<a href="http://ipxe.org/1d704039">http://ipxe.org/1d704039</a>) "</div>
<div><br></div>
<div>The same iscsi drive can be connected by using windows iscsi initiator and works fine.</div>
<div><br></div>
<div>Kindly help, which thing I am doing wrong.</div>
<div><br></div>
<div>Thanking you.</div>
<div><br></div>
<div><br></div>
<div>Vaibhav.</div>
</div></div>
sujan karanjeet | 16 Sep 09:48 2014
Picon

Booting Custom images (iso) with snponly.efi

Hi,

I managed to boot into snponly with Michael's "snponly" branch (https://git.ipxe.org/people/mcb30/ipxe.git/shortlog/refs/heads/snponly).

I understand that there is not much support for anything else than efi libraries but is it somehow possible to boot custom bzimage (iso) files using snponly.efi or ipxe.efi ?

This is how I'm booting the image files at the moment:

:MY_IMAGE
initrd http://${server}/images/MY_IMAGE.iso
chain http://${server}/memdisk iso raw || goto failed
goto start


--
Regards,
----------------------
Sujan Karanjeet

 
 
<div><div dir="ltr">Hi,<br><br>I managed to boot into snponly with Michael's "snponly" branch (<a href="https://git.ipxe.org/people/mcb30/ipxe.git/shortlog/refs/heads/snponly">https://git.ipxe.org/people/mcb30/ipxe.git/shortlog/refs/heads/snponly</a>).<br><br>I understand that there is not much support for anything else than efi libraries but is it somehow possible to boot custom bzimage (iso) files using snponly.efi or ipxe.efi ?<br><br>This is how I'm booting the image files at the moment:<br><br>:MY_IMAGE<br>initrd http://${server}/images/MY_IMAGE.iso<br>chain http://${server}/memdisk iso raw || goto failed<br>goto start<br clear="all"><br><br>-- <br>Regards,<br>----------------------<br>Sujan Karanjeet<br><br>&nbsp;<br>&nbsp;<br>
</div></div>
Jan Kiszka | 15 Sep 08:00 2014
Picon

[PATCH] [intel] Add I217-LM PCI ID

Add the ID for the LM variant and differentiate it from the I217-V.

Signed-off-by: Jan Kiszka <jan.kiszka@...>
---
 src/drivers/net/intel.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c
index d29bd16..8cc0e7f 100644
--- a/src/drivers/net/intel.c
+++ b/src/drivers/net/intel.c
 <at>  <at>  -996,7 +996,8  <at>  <at>  static struct pci_device_id intel_nics[] = {
 	PCI_ROM ( 0x8086, 0x1526, "82576-5", "82576", 0 ),
 	PCI_ROM ( 0x8086, 0x1527, "82580-f2", "82580 Fiber", 0 ),
 	PCI_ROM ( 0x8086, 0x1533, "i210", "I210", 0 ),
-	PCI_ROM ( 0x8086, 0x153b, "i217", "I217", 0 ),
+	PCI_ROM ( 0x8086, 0x153a, "i217lm", "I217-LM", 0 ),
+	PCI_ROM ( 0x8086, 0x153b, "i217v", "I217-V", 0 ),
 	PCI_ROM ( 0x8086, 0x294c, "82566dc-2", "82566DC-2", 0 ),
 	PCI_ROM ( 0x8086, 0x2e6e, "cemedia", "CE Media Processor", 0 ),
 };
-- 
1.8.1.1.298.ge7eed54

Add the ID for the LM variant and differentiate it from the I217-V.

Signed-off-by: Jan Kiszka <jan.kiszka@...>
---
 src/drivers/net/intel.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c
index d29bd16..8cc0e7f 100644
--- a/src/drivers/net/intel.c
+++ b/src/drivers/net/intel.c
 <at>  <at>  -996,7 +996,8  <at>  <at>  static struct pci_device_id intel_nics[] = {
 	PCI_ROM ( 0x8086, 0x1526, "82576-5", "82576", 0 ),
 	PCI_ROM ( 0x8086, 0x1527, "82580-f2", "82580 Fiber", 0 ),
 	PCI_ROM ( 0x8086, 0x1533, "i210", "I210", 0 ),
-	PCI_ROM ( 0x8086, 0x153b, "i217", "I217", 0 ),
+	PCI_ROM ( 0x8086, 0x153a, "i217lm", "I217-LM", 0 ),
+	PCI_ROM ( 0x8086, 0x153b, "i217v", "I217-V", 0 ),
 	PCI_ROM ( 0x8086, 0x294c, "82566dc-2", "82566DC-2", 0 ),
 	PCI_ROM ( 0x8086, 0x2e6e, "cemedia", "CE Media Processor", 0 ),
 };
--

-- 
1.8.1.1.298.ge7eed54

Andy Medynets | 16 Sep 02:33 2014
Picon

select a specific interface during initialization?

Hi list,

our  board  has multiple network chips: 6 x Intel 82574L and 1 x Intel
EG20T  pce-gbe(8086:8817,  currently not supported). Due to this, ipxe
spends enormously long time probing and initializing available network
interfaces,  which is not needed. Only one dedicated network interface
will be used for booting.
Is   there   a  way  to  [pre]select  a  single  network interface for
initialization and further use?
We're still trying to avoid patching the source code.

Thanks,

am

Wissam Shoukair | 15 Sep 13:55 2014

udp padding in udp_demux()

Hi all,

What is the purpose of the padding in this function?

 

static struct udp_connection * udp_demux ( struct sockaddr_tcpip *local ) {

                static const struct sockaddr_tcpip empty_sockaddr = { .pad = { 0, } };

                struct udp_connection *udp;

 

                list_for_each_entry ( udp, &udp_conns, list ) {

                                if ( ( ( udp->local.st_family == local->st_family ) ||

                                       ( udp->local.st_family == 0 ) ) &&

                                     ( ( udp->local.st_port == local->st_port ) ||

                                       ( udp->local.st_port == 0 ) ) &&

                                     ( ( memcmp ( udp->local.pad, local->pad,

                                                                  sizeof ( udp->local.pad ) ) == 0 ) ||

                                       ( memcmp ( udp->local.pad, empty_sockaddr.pad,

                                                                  sizeof ( udp->local.pad ) ) == 0 ) ) ) {

                                                return udp;

                                }

                }

                return NULL;

}

 

What is the purpose of these checks in the expression?

     ( ( memcmp ( udp->local.pad, local->pad,

                                 sizeof ( udp->local.pad ) ) == 0 ) ||

       ( memcmp ( udp->local.pad, empty_sockaddr.pad,

                                  sizeof ( udp->local.pad ) ) == 0 ) ) ) {

 

 

 

Thanks,

Wissam

<div>
<div class="WordSection1">
<p class="MsoNormal">Hi all,<p></p></p>
<p class="MsoNormal">What is the purpose of the padding in this function?<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">static struct udp_connection * udp_demux ( struct sockaddr_tcpip *local ) {<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static const struct sockaddr_tcpip empty_sockaddr = { .pad = { 0, } };<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct udp_connection *udp;<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list_for_each_entry ( udp, &amp;udp_conns, list ) {<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ( ( udp-&gt;local.st_family == local-&gt;st_family ) ||<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( udp-&gt;local.st_family == 0 ) ) &amp;&amp;<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ( ( udp-&gt;local.st_port == local-&gt;st_port ) ||<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( udp-&gt;local.st_port == 0 ) ) &amp;&amp;<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ( ( memcmp ( udp-&gt;local.pad, local-&gt;pad,<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; sizeof ( udp-&gt;local.pad ) ) == 0 ) ||<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( memcmp ( udp-&gt;local.pad, empty_sockaddr.pad,<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; sizeof ( udp-&gt;local.pad ) ) == 0 ) ) ) {<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return udp;<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return NULL;<p></p></p>
<p class="MsoNormal">}<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">What is the purpose of these checks in the expression?<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp; ( ( memcmp ( udp-&gt;local.pad, local-&gt;pad,<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sizeof ( udp-&gt;local.pad ) ) == 0 ) ||<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;( memcmp ( udp-&gt;local.pad, empty_sockaddr.pad,<p></p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; sizeof ( udp-&gt;local.pad ) ) == 0 ) ) ) {<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Thanks,<p></p></p>
<p class="MsoNormal">Wissam<p></p></p>
</div>
</div>
Wissam Shoukair | 9 Sep 10:18 2014

Boot in IPv6

Hi all,

I’m new to the IPv6 interface in iPXE. How I can boot only over IPv6 ?

 

Thanks,

Wissam Shoukair

<div>
<div class="WordSection1">
<p class="MsoNormal">Hi all,<p></p></p>
<p class="MsoNormal">I&rsquo;m new to the IPv6 interface in iPXE. How I can boot only over IPv6 ?<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Thanks,<p></p></p>
<p class="MsoNormal">Wissam Shoukair<p></p></p>
</div>
</div>
Wissam Shoukair | 7 Sep 16:29 2014

[PATCH] Validate L2 address in DHCP packets.

Checking for valid XID is not enough, because if two PXE clients
sends the DHCP Discover with the same XID then both of them will get
both offers while one of them with the wrong client HW address.

Signed-off-by: Wissam Shoukair <wissams@...>
---
 src/net/udp/dhcp.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c
index e6d3edd..d89728f 100644
--- a/src/net/udp/dhcp.c
+++ b/src/net/udp/dhcp.c
 <at>  <at>  -1157,10 +1157,12  <at>  <at>  static int dhcp_deliver ( struct dhcp_session *dhcp,
 	size_t data_len;
 	struct dhcp_packet *dhcppkt;
 	struct dhcphdr *dhcphdr;
+	uint8_t local_mac[MAX_LL_ADDR_LEN];
 	uint8_t msgtype = 0;
 	struct in_addr server_id = { 0 };
 	int rc = 0;

+
 	/* Sanity checks */
 	if ( ! meta->src ) {
 		DBGC ( dhcp, "DHCP %p received packet without source port\n",
 <at>  <at>  -1193,6 +1195,24  <at>  <at>  static int dhcp_deliver ( struct dhcp_session *dhcp,
 	dhcppkt_fetch ( dhcppkt, DHCP_SERVER_IDENTIFIER,
 			&server_id, sizeof ( server_id ) );

+	/* Validate L2 address */
+#define MAC_FMT		"%02x:%02x:%02x:%02x:%02x:%02x"
+#define MAC_PTR(x)	((uint8_t*)(x))[0], ((uint8_t*)(x))[1], ((uint8_t*)(x))[2], \
+					((uint8_t*)(x))[3], ((uint8_t*)(x))[4], ((uint8_t*)(x))[5]
+
+	dhcp_chaddr ( dhcp->netdev, local_mac, NULL );
+	DBGC ( dhcp, "DHCP %p %s from %s:%d is for MAC ["MAC_FMT"]."
+		   "Local MAC is ["MAC_FMT"]. ", dhcp, dhcp_msgtype_name ( msgtype ),
+		   inet_ntoa ( peer->sin_addr ), ntohs ( peer->sin_port ),
+		   MAC_PTR( dhcppkt->dhcphdr->chaddr ), MAC_PTR( local_mac ) );
+	if ( memcmp ( dhcppkt->dhcphdr->chaddr, local_mac, dhcppkt->dhcphdr->hlen ) ) {
+		DBGC ( dhcp, "Packet discarded.\n" );
+		rc = -EINVAL;
+		goto err_mac;
+	} else {
+		DBGC ( dhcp, "Handling packet.\n" );
+	}
+
 	/* Check for matching transaction ID */
 	if ( dhcphdr->xid != dhcp->xid ) {
 		DBGC ( dhcp, "DHCP %p %s from %s:%d has bad transaction "
 <at>  <at>  -1207,6 +1227,7  <at>  <at>  static int dhcp_deliver ( struct dhcp_session *dhcp,
 	dhcp->state->rx ( dhcp, dhcppkt, peer, msgtype, server_id );

  err_xid:
+ err_mac:
 	dhcppkt_put ( dhcppkt );
  err_alloc_dhcppkt:
  err_no_src:
--

-- 
1.7.11.1

Parker, Andrew (ABC | 5 Sep 14:39 2014

iPXE

Good morning

 

Let me say that before redirect me somebody. I am clueless about iPXE. I am in desperate need to not just understand it, but to fully be able to configure it for any network and make possible to use iPXE to image a machine over the internet and over a network. That being said, is there anyone your group of people can direct me to?

 

Andrew L. Parker |  Client Services Analyst |  Virginia ABC  |  2901 Hermitage Road, Richmond, VA 23220

Office: (804) 204-2320  |   andrew.parker-P7EMl/mCPE0zQCAmPlbWzA@public.gmane.org

Facebook and Twitter: VirginiaABC

Confidentiality Statement

 

 

<div>
<div class="WordSection1">
<p class="MsoNormal">Good morning <p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Let me say that before redirect me somebody. I am clueless about iPXE. I am in desperate need to not just understand it, but to fully be able to configure it for any network and make possible to use iPXE to image a machine over the internet
 and over a network. That being said, is there anyone your group of people can direct me to?<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><span>Andrew L. Parker </span><span>|&nbsp; Client Services Analyst</span>
<span>|&nbsp; Virginia ABC&nbsp; |&nbsp; 2901 Hermitage Road, Richmond, VA 23220</span><span><p></p></span></p>
<p class="MsoNormal"><span>Office: (804) 204-2320&nbsp; |&nbsp;&nbsp;
</span><span><a href="andrew.parker@...ia.gov"><span>andrew.parker@...</span></a><p></p></span></p>
<p class="MsoNormal"><span>Facebook and Twitter: VirginiaABC<span>
<p></p></span></span></p>
<p class="MsoNormal"><a href="http://www.stg.abc.virginia.gov/base/message.html" target="_blank"><span>Confidentiality Statement</span></a><p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
</div>
</div>

Gmane