Home | History | Annotate | Download | only in WebServer
      1 /**
      2   @file
      3   Reboot the system
      4 
      5   Copyright (c) 2011-2012, Intel Corporation
      6   All rights reserved. This program and the accompanying materials
      7   are licensed and made available under the terms and conditions of the BSD License
      8   which accompanies this distribution.  The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #include <WebServer.h>
     17 #include <Library/UefiRuntimeServicesTableLib.h>
     18 
     19 
     20 /**
     21   Page to reboot the system
     22 
     23   @param [in] SocketFD      The socket's file descriptor to add to the list.
     24   @param [in] pPort         The WSDT_PORT structure address
     25   @param [out] pbDone       Address to receive the request completion status
     26 
     27   @retval EFI_SUCCESS       The request was successfully processed
     28 
     29 **/
     30 EFI_STATUS
     31 RebootPage (
     32   IN int SocketFD,
     33   IN WSDT_PORT * pPort,
     34   OUT BOOLEAN * pbDone
     35   )
     36 {
     37   EFI_STATUS Status;
     38 
     39   DBG_ENTER ( );
     40 
     41   //
     42   //  Send the Reboot page
     43   //
     44   for ( ; ; ) {
     45     //
     46     //  Send the page header
     47     //
     48     Status = HttpPageHeader ( SocketFD, pPort, L"Reboot" );
     49     if ( EFI_ERROR ( Status )) {
     50       break;
     51     }
     52 
     53     //
     54     //  Send the page body
     55     //
     56     Status = HttpSendAnsiString ( SocketFD,
     57                                   pPort,
     58                                   "<h1>Reboot</h1>\r\n"
     59                                   "<p>\r\n"
     60                                   "  Ouch!  The system is rebooting!\r\n" );
     61     if ( EFI_ERROR ( Status )) {
     62       break;
     63     }
     64 
     65     //
     66     //  Send the page trailer
     67     //
     68     Status = HttpPageTrailer ( SocketFD, pPort, pbDone );
     69     if ( EFI_ERROR ( Status )) {
     70       break;
     71     }
     72 
     73     //
     74     //  Deliver the data to the remote system by
     75     //  closing the socket
     76     //
     77     close ( SocketFD );
     78 
     79     //
     80     //  Attempt to reboot the system
     81     //
     82     DEBUG (( DEBUG_REQUEST, "Reseting System\r\n" ));
     83     gRT->ResetSystem ( EfiResetCold,
     84                        EFI_SUCCESS,
     85                        0,
     86                        NULL );
     87     break;
     88   }
     89 
     90   //
     91   //  Return the operation status
     92   //
     93   DBG_EXIT_STATUS ( Status );
     94   return Status;
     95 }
     96