summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/gpxe/src/core/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux-4.02/gpxe/src/core/main.c')
-rw-r--r--contrib/syslinux-4.02/gpxe/src/core/main.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/gpxe/src/core/main.c b/contrib/syslinux-4.02/gpxe/src/core/main.c
new file mode 100644
index 0000000..d07d24c
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/core/main.c
@@ -0,0 +1,91 @@
+/**************************************************************************
+gPXE - Network Bootstrap Program
+
+Literature dealing with the network protocols:
+ ARP - RFC826
+ RARP - RFC903
+ UDP - RFC768
+ BOOTP - RFC951, RFC2132 (vendor extensions)
+ DHCP - RFC2131, RFC2132 (options)
+ TFTP - RFC1350, RFC2347 (options), RFC2348 (blocksize), RFC2349 (tsize)
+ RPC - RFC1831, RFC1832 (XDR), RFC1833 (rpcbind/portmapper)
+
+**************************************************************************/
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <stdio.h>
+#include <gpxe/init.h>
+#include <gpxe/features.h>
+#include <gpxe/shell.h>
+#include <gpxe/shell_banner.h>
+#include <gpxe/image.h>
+#include <usr/autoboot.h>
+#include <config/general.h>
+
+#define NORMAL "\033[0m"
+#define BOLD "\033[1m"
+#define CYAN "\033[36m"
+
+/**
+ * Main entry point
+ *
+ * @ret rc Return status code
+ */
+__asmcall int main ( void ) {
+ struct feature *feature;
+ struct image *image;
+
+ /* Some devices take an unreasonably long time to initialise */
+ printf ( PRODUCT_SHORT_NAME " initialising devices...\n" );
+
+ initialise();
+ startup();
+
+ /*
+ * Print welcome banner
+ *
+ *
+ * If you wish to brand this build of gPXE, please do so by
+ * defining the string PRODUCT_NAME in config/general.h.
+ *
+ * While nothing in the GPL prevents you from removing all
+ * references to gPXE or http://etherboot.org, we prefer you
+ * not to do so.
+ *
+ */
+ printf ( NORMAL "\n\n" PRODUCT_NAME "\n" BOLD "gPXE " VERSION
+ NORMAL " -- Open Source Boot Firmware -- "
+ CYAN "http://etherboot.org" NORMAL "\n"
+ "Features:" );
+ for_each_table_entry ( feature, FEATURES )
+ printf ( " %s", feature->name );
+ printf ( "\n" );
+
+ /* Prompt for shell */
+ if ( shell_banner() ) {
+ /* User wants shell; just give them a shell */
+ shell();
+ } else {
+ /* User doesn't want shell; load and execute the first
+ * image, or autoboot() if we have no images. If
+ * booting fails for any reason, offer a second chance
+ * to enter the shell for diagnostics.
+ */
+ if ( have_images() ) {
+ for_each_image ( image ) {
+ image_exec ( image );
+ break;
+ }
+ } else {
+ autoboot();
+ }
+
+ if ( shell_banner() )
+ shell();
+ }
+
+ shutdown ( SHUTDOWN_EXIT | shutdown_exit_flags );
+
+ return 0;
+}