diff options
author | Martin Sivak <msivak@redhat.com> | 2009-02-13 15:45:46 +0100 |
---|---|---|
committer | Martin Sivak <msivak@redhat.com> | 2009-02-13 15:46:31 +0100 |
commit | 102f043ca27751ebce4d73b41c6d8042ca7a12ca (patch) | |
tree | 0dcdbfc7de7d8c8ac031c58ae15a74944f06b08a /loader/ibft.c | |
parent | f4ee88298a7726cd8775380e3b9643715e725d13 (diff) | |
download | anaconda-102f043ca27751ebce4d73b41c6d8042ca7a12ca.tar.gz anaconda-102f043ca27751ebce4d73b41c6d8042ca7a12ca.tar.xz anaconda-102f043ca27751ebce4d73b41c6d8042ca7a12ca.zip |
Add the missing files.. again..
Diffstat (limited to 'loader/ibft.c')
-rw-r--r-- | loader/ibft.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/loader/ibft.c b/loader/ibft.c new file mode 100644 index 000000000..b3a382759 --- /dev/null +++ b/loader/ibft.c @@ -0,0 +1,105 @@ +/* + File name: ibft.c + Date: 2008/09/02 + Author: Martin Sivak <msivak@redhat.com> + + Copyright (C) 2008 Red Hat + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + in a file called COPYING along with this program; if not, write to + the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA + 02139, USA. +*/ + + +#include <stddef.h> +#include <stdio.h> +#include <string.h> + +#include <libiscsi.h> +#include "ibft.h" + +struct libiscsi_network_config ibft_context; +int ibft_ispresent = 0; +int ibft_initialized = 0; + +int ibft_init(void) +{ + int ret; + + memset(&ibft_context, 0, sizeof(ibft_context)); + + ret = libiscsi_get_firmware_network_config(&ibft_context); + + /* ret == 0 -> OK */ + ibft_ispresent = !ret; + ibft_initialized = 1; + + return ibft_initialized; +} + +/* Is iBFT available on this system */ +int ibft_present() +{ + if(!ibft_initialized) + ibft_init(); + + return ibft_ispresent; +} + +/* Is the iBFT network configured to use DHCP */ +int ibft_iface_dhcp() +{ + if(!ibft_initialized) + ibft_init(); + + if(!ibft_present()) + return -1; + + return ibft_context.dhcp; +} + +#define ibft_iface_charfunc(name, var) char* ibft_iface_##name()\ +{\ + if(!ibft_initialized)\ + ibft_init();\ +\ + if(!ibft_present())\ + return NULL;\ +\ + if(!strlen(ibft_context.var))\ + return NULL;\ +\ + return ibft_context.var;\ +} + + +/* Get the iBFT MAC address */ +ibft_iface_charfunc(mac, mac_address) + +/* Get the iBFT ip address */ +ibft_iface_charfunc(ip, ip_address) + +/* Get the iBFT subnet mask */ +ibft_iface_charfunc(mask, netmask) + +/* Get the iBFT gateway */ +ibft_iface_charfunc(gw, gateway) + +/* Get the iBFT iface name */ +ibft_iface_charfunc(iface, iface_name) + +/* Get the iBFT dns servers */ +ibft_iface_charfunc(dns1, primary_dns) +ibft_iface_charfunc(dns2, secondary_dns) + |