Fixes #5312 - auto boot from disk on second PXE boot (after payload delivery).
git-svn-id: file:///home/svn/framework3/trunk@13629 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
ce9db06589
commit
2b340439e0
|
@ -91,6 +91,7 @@ class Server
|
||||||
self.leasetime = 600
|
self.leasetime = 600
|
||||||
self.relayip = "\x00\x00\x00\x00" # relay ip - not currently suported
|
self.relayip = "\x00\x00\x00\x00" # relay ip - not currently suported
|
||||||
self.pxeconfigfile = "update2"
|
self.pxeconfigfile = "update2"
|
||||||
|
self.pxealtconfigfile = "update0"
|
||||||
self.pxepathprefix = ""
|
self.pxepathprefix = ""
|
||||||
self.pxereboottime = 2000
|
self.pxereboottime = 2000
|
||||||
end
|
end
|
||||||
|
@ -120,7 +121,7 @@ class Server
|
||||||
# Set an option
|
# Set an option
|
||||||
def set_option(opts)
|
def set_option(opts)
|
||||||
allowed_options = [
|
allowed_options = [
|
||||||
:serveOnce, :servePXE, :relayip, :leasetime, :dnsserv,
|
:serveOnce, :pxealtconfigfile, :servePXE, :relayip, :leasetime, :dnsserv,
|
||||||
:pxeconfigfile, :pxepathprefix, :pxereboottime, :router,
|
:pxeconfigfile, :pxepathprefix, :pxereboottime, :router,
|
||||||
:give_hostname, :served_hostname, :served_over, :serveOnlyPXE
|
:give_hostname, :served_hostname, :served_over, :serveOnlyPXE
|
||||||
]
|
]
|
||||||
|
@ -149,7 +150,7 @@ class Server
|
||||||
attr_accessor :listen_host, :listen_port, :context, :leasetime, :relayip, :router, :dnsserv
|
attr_accessor :listen_host, :listen_port, :context, :leasetime, :relayip, :router, :dnsserv
|
||||||
attr_accessor :sock, :thread, :myfilename, :ipstring, :served, :serveOnce
|
attr_accessor :sock, :thread, :myfilename, :ipstring, :served, :serveOnce
|
||||||
attr_accessor :current_ip, :start_ip, :end_ip, :broadcasta, :netmaskn
|
attr_accessor :current_ip, :start_ip, :end_ip, :broadcasta, :netmaskn
|
||||||
attr_accessor :servePXE, :pxeconfigfile, :pxepathprefix, :pxereboottime, :serveOnlyPXE
|
attr_accessor :servePXE, :pxeconfigfile, :pxealtconfigfile, :pxepathprefix, :pxereboottime, :serveOnlyPXE
|
||||||
attr_accessor :give_hostname, :served_hostname, :served_over
|
attr_accessor :give_hostname, :served_hostname, :served_over
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
@ -267,7 +268,7 @@ protected
|
||||||
# if serveOnce & PXE, don't reply to another PXE request
|
# if serveOnce & PXE, don't reply to another PXE request
|
||||||
# if serveOnce & ! PXE, don't reply to anything
|
# if serveOnce & ! PXE, don't reply to anything
|
||||||
if self.serveOnce == true and self.served.has_key?(buf[28..43]) and
|
if self.serveOnce == true and self.served.has_key?(buf[28..43]) and
|
||||||
self.served[buf[28..43]][1] and (pxeclient == true or self.servePXE == false)
|
self.served[buf[28..43]][1] and (pxeclient == false or self.servePXE == false)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
elsif messageType == DHCPRequest #DHCP Request - send DHCP ACK
|
elsif messageType == DHCPRequest #DHCP Request - send DHCP ACK
|
||||||
|
@ -292,7 +293,12 @@ protected
|
||||||
pkt << dhcpoption(OpDns, self.dnsserv)
|
pkt << dhcpoption(OpDns, self.dnsserv)
|
||||||
if self.servePXE # PXE options
|
if self.servePXE # PXE options
|
||||||
pkt << dhcpoption(OpPXEMagic, PXEMagic)
|
pkt << dhcpoption(OpPXEMagic, PXEMagic)
|
||||||
|
if self.serveOnce == true and self.served.has_key?(buf[28..43]) and
|
||||||
|
self.served[buf[28..43]][1] and pxeclient == true
|
||||||
|
pkt << dhcpoption(OpPXEConfigFile, self.pxealtconfigfile)
|
||||||
|
else
|
||||||
pkt << dhcpoption(OpPXEConfigFile, self.pxeconfigfile)
|
pkt << dhcpoption(OpPXEConfigFile, self.pxeconfigfile)
|
||||||
|
end
|
||||||
pkt << dhcpoption(OpPXEPathPrefix, self.pxepathprefix)
|
pkt << dhcpoption(OpPXEPathPrefix, self.pxepathprefix)
|
||||||
pkt << dhcpoption(OpPXERebootTime, [self.pxereboottime].pack('N'))
|
pkt << dhcpoption(OpPXERebootTime, [self.pxereboottime].pack('N'))
|
||||||
if ( self.give_hostname == true )
|
if ( self.give_hostname == true )
|
||||||
|
|
Loading…
Reference in New Issue