From 102f043ca27751ebce4d73b41c6d8042ca7a12ca Mon Sep 17 00:00:00 2001 From: Martin Sivak Date: Fri, 13 Feb 2009 15:45:46 +0100 Subject: Add the missing files.. again.. --- loader/ibft.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ loader/ibft.h | 45 +++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 loader/ibft.c create mode 100644 loader/ibft.h (limited to 'loader') 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 + + 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 +#include +#include + +#include +#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) + diff --git a/loader/ibft.h b/loader/ibft.h new file mode 100644 index 000000000..a922c9157 --- /dev/null +++ b/loader/ibft.h @@ -0,0 +1,45 @@ +/* + File name: ibft.h + Date: 2008/09/02 + Author: Martin Sivak + + 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. +*/ + + +#ifndef __IBFT_H__ +#define __IBFT_H__ + + +int ibft_init(); +int ibft_present(); + +int ibft_iface_dhcp(); + +char* ibft_iface_mac(); +char* ibft_iface_ip(); +char* ibft_iface_mask(); +char* ibft_iface_gw(); +char* ibft_iface_iface(); +char* ibft_iface_dns1(); +char* ibft_iface_dns2(); + + +#endif + +/* end of ibft.h */ -- cgit