<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hello, 
<div><br>
</div>
<div>I am trying to load an iPXE from an untagged network and have it autoboot from a vlan tagged network.   I couldn't get this to work at first.   I ran into what could be a problem with the routing table lookup.   I was able to get it to work but the change
 might not be the best fix.</div>
<div><br>
</div>
<div>untagged network is 192.168.0.1/24</div>
<div>tagged network is 169.254.0.0/16</div>
<div><br>
</div>
<div>iPXE script:</div>
<div> <font face="Consolas" size="1"><span style="font-size: 11px;">#!ipxe</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">vcreate --tag 4 --priority 2 net0</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">autoboot net0-4</span></font></div>
<div><br>
</div>
<div>In my testing, I saw iPXE was able to get a DHCP lease from the tagged network fine.  When it tried to TFTP to the DHCP server on the tagged network, it sent out packets using the untagged net0 interface and IP address as source address with a destination
 of the TFTP server on the tagged network.  I verified this by taking a network trace on the untagged network.</div>
<div><br>
</div>
<div>When I added the route command to the script, it showed net0 was listed before net0-4.   The route listed 192.168.0.254 (DHCP server IP) as the gateway for net0.   I added some debug code to net/ipv4.c ipv4_route() function and found the first routing
 table entry was being returned because it matched the section of code below.   If every route has a gateway then I do not believe it will traverse the entire routing table.</div>
<div><br>
</div>
<div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                        /* If destination is an off-link global</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                         * address, and we have a default <font color="white"><span style="background-color: black;">gateway</span></font>,</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                         * then use this route.</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                         */</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                        if ( miniroute-><font color="white"><span style="background-color: black;">gateway</span></font>.s_addr ) {</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                                *dest = miniroute-><font color="white"><span style="background-color: black;">gateway</span></font>;</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                                return miniroute;</span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;"> </span></font></div>
<div style="margin: 14pt 0px;"><font face="Consolas" size="1"><span style="font-size: 11px;">                        }</span></font></div>
</div>
<div><br>
</div>
<div>After commenting out this section, it used the net0-4 source IP address on the tagged network and was able to autoboot successfully.</div>
<div><br>
</div>
<div><br>
</div>
<div>Regards,</div>
<div>Steven Jeffers</div>
</div>
</body>
</html>