From 7b5768ae6a3fee6cb80300824b9e758021b22f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Thu, 7 Aug 2014 15:32:21 +0200 Subject: Add suport for Dell 13G server --- debian/changelog | 10 + debian/patches/120-Dell-13G.patch | 401 ++++++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + debian/rules | 16 +- 4 files changed, 415 insertions(+), 13 deletions(-) create mode 100644 debian/patches/120-Dell-13G.patch diff --git a/debian/changelog b/debian/changelog index bd824c2..b591089 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +ipmitool (1.8.14-4) unstable; urgency=medium + + * New debian/patches/120-Dell-13G.patch: + - Add support for Dell 13G server (Closes: #756555) + * debian/rules: + - Remove oldstyle CFLAGS parameter. + - change hardening to modern dh. + + -- Jörg Frings-Fürst Thu, 07 Aug 2014 15:09:16 +0200 + ipmitool (1.8.14-3) unstable; urgency=medium * move ipmitool.conf diff --git a/debian/patches/120-Dell-13G.patch b/debian/patches/120-Dell-13G.patch new file mode 100644 index 0000000..0f4ef9b --- /dev/null +++ b/debian/patches/120-Dell-13G.patch @@ -0,0 +1,401 @@ +Description: Add support for Dell 13G server. + Add support for upcoming Dell PowerEdge 13G server + and replace multiple if statments. + Based on patch from SriniG +Author: Jörg Frings-Fürst +Origin: based on patch from SriniG +Bug: http://sourceforge.net/p/ipmitool/patches/102/ +Bug-debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=756555 +Forwarded: http://sourceforge.net/p/ipmitool/patches/102/ +Reviewed-by: 2014-08-07 SriniG +Last-Update: 2014-08-07 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/include/ipmitool/ipmi_delloem.h +=================================================================== +--- trunk.orig/include/ipmitool/ipmi_delloem.h 2014-08-04 17:24:11.291429804 +0200 ++++ trunk/include/ipmitool/ipmi_delloem.h 2014-08-04 17:24:11.279429542 +0200 +@@ -72,6 +72,7 @@ + + #define IDRAC_11G 1 + #define IDRAC_12G 2 ++#define IDRAC_13G 3 + // Return Error code for license + #define LICENSE_NOT_SUPPORTED 0x6F + #define VFL_NOT_LICENSED 0x33 +@@ -184,6 +185,9 @@ + #define IMC_IDRAC_12G_MONOLITHIC (uint8_t) (0x10) + #define IMC_IDRAC_12G_MODULAR (uint8_t) (0x11) + ++#define IMC_IDRAC_13G_MONOLITHIC (uint8_t) (0x20) ++#define IMC_IDRAC_13G_MODULAR (uint8_t) (0x21) ++#define IMC_IDRAC_13G_DCS (uint8_t) (0x22) + + + typedef struct +Index: trunk/lib/ipmi_delloem.c +=================================================================== +--- trunk.orig/lib/ipmi_delloem.c 2014-08-04 17:24:11.291429804 +0200 ++++ trunk/lib/ipmi_delloem.c 2014-08-04 17:24:11.279429542 +0200 +@@ -123,6 +123,16 @@ + + static int current_arg =0; + uint8_t iDRAC_FLAG=0; ++ ++/* ++ * new flags for ++ * 11G || 12G || 13G -> _ALL ++ * 12G || 13G -> _12_13 ++ * ++ */ ++uint8_t iDRAC_FLAG_ALL=0; ++uint8_t iDRAC_FLAG_12_13=0; ++ + LCD_MODE lcd_mode; + static uint8_t LcdSupported=0; + static uint8_t SetLEDSupported=0; +@@ -358,7 +368,7 @@ + lprintf(LOG_ERR, "lcd is not supported on this system."); + return -1; + } else if (strncmp(argv[current_arg], "info\0", 5) == 0) { +- if ((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G)) { ++ if (iDRAC_FLAG_ALL) { + rc = ipmi_lcd_get_info_wh(intf); + } else { + rc = ipmi_lcd_get_info(intf); +@@ -392,7 +402,7 @@ + } + } + if ((strncmp(argv[current_arg], "mode\0", 5) == 0) +- && ((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G))) { ++ && (iDRAC_FLAG_ALL)) { + current_arg++; + if (argc <= current_arg) { + ipmi_lcd_usage(); +@@ -446,7 +456,7 @@ + ipmi_lcd_usage(); + } + } else if ((strncmp(argv[current_arg], "lcdqualifier\0", 13) == 0) +- && ((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G))) { ++ && (iDRAC_FLAG_ALL)) { + current_arg++; + if (argc <= current_arg) { + ipmi_lcd_usage(); +@@ -470,7 +480,7 @@ + ipmi_lcd_usage(); + } + } else if ((strncmp(argv[current_arg], "errordisplay\0", 13) == 0) +- && ((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G))) { ++ && (iDRAC_FLAG_ALL)) { + current_arg++; + if (argc <= current_arg) { + ipmi_lcd_usage(); +@@ -635,17 +645,33 @@ + val2str(rsp->ccode, completion_code_vals)); */ + return -1; + } ++ /* ++ * Set the new flags to 0 ++ */ ++ iDRAC_FLAG_ALL = 0; ++ iDRAC_FLAG_12_13 = 0; + /* Support the 11G Monolithic, modular, Maisy and Coaster */ + if ((IMC_IDRAC_11G_MONOLITHIC == data[10]) + || (IMC_IDRAC_11G_MODULAR == data[10]) + || (IMC_MASER_LITE_BMC == data[10]) + || (IMC_MASER_LITE_NU == data[10])) { + iDRAC_FLAG=IDRAC_11G; ++ iDRAC_FLAG_ALL = 1; + } else if((IMC_IDRAC_12G_MONOLITHIC == data[10]) + || (IMC_IDRAC_12G_MODULAR == data[10])) { + iDRAC_FLAG = IDRAC_12G; ++ iDRAC_FLAG_ALL = 1; ++ iDRAC_FLAG_12_13 = 1; ++ } else if( (IMC_IDRAC_13G_MONOLITHIC == data[10]) ++ || (IMC_IDRAC_13G_MODULAR == data[10]) ++ || (IMC_IDRAC_13G_DCS == data[10]) ) { ++ iDRAC_FLAG=IDRAC_13G; ++ iDRAC_FLAG_ALL = 1; ++ iDRAC_FLAG_12_13 = 1; + } else { + iDRAC_FLAG = 0; ++ iDRAC_FLAG_ALL = 0; ++ iDRAC_FLAG_12_13 = 0; + } + IMC_Type = data[10]; + return 0; +@@ -1394,7 +1420,7 @@ + lprintf(LOG_NOTICE, + ""); + lprintf(LOG_NOTICE, +-"iDRAC 11g or iDRAC 12g:"); ++"iDRAC 11g or iDRAC 12g or iDRAC 13g :"); + lprintf(LOG_NOTICE, + " lcd set {mode}|{lcdqualifier}|{errordisplay}"); + lprintf(LOG_NOTICE, +@@ -1561,7 +1587,9 @@ + return -1; + } + if ((IMC_IDRAC_12G_MODULAR == IMC_Type) +- || (IMC_IDRAC_12G_MONOLITHIC== IMC_Type)) { ++ || (IMC_IDRAC_12G_MONOLITHIC== IMC_Type) ++ || (IMC_IDRAC_13G_MODULAR == IMC_Type) ++ || (IMC_IDRAC_13G_MONOLITHIC== IMC_Type)) { + /* Get the Chasiss Assigned MAC Addresss for 12g Only */ + memcpy(VirtualMacAddress, ((rsp->data) + 1), MACADDRESSLENGH); + for (i = 0; i < MACADDRESSLENGH; i++) { +@@ -1599,6 +1627,9 @@ + } else if ((IMC_IDRAC_12G_MODULAR == IMC_Type) + || (IMC_IDRAC_12G_MONOLITHIC== IMC_Type)) { + printf("\niDRAC7 MAC Address "); ++ } else if ((IMC_IDRAC_13G_MODULAR == IMC_Type) ++ || (IMC_IDRAC_13G_MONOLITHIC== IMC_Type)) { ++ printf ("\niDRAC8 MAC Address "); + } else if ((IMC_MASER_LITE_BMC== IMC_Type) + || (IMC_MASER_LITE_NU== IMC_Type)) { + printf("\nBMC MAC Address "); +@@ -1668,6 +1699,9 @@ + } else if ((IMC_IDRAC_12G_MODULAR == IMC_Type) + || (IMC_IDRAC_12G_MONOLITHIC== IMC_Type)) { + printf("\niDRAC7 MAC Address "); ++ } else if ((IMC_IDRAC_13G_MODULAR == IMC_Type) ++ || (IMC_IDRAC_13G_MONOLITHIC== IMC_Type)) { ++ printf ("\niDRAC8 MAC Address "); + } else if ((IMC_MASER_LITE_BMC== IMC_Type) + || (IMC_MASER_LITE_NU== IMC_Type)) { + printf("\n\rBMC MAC Address "); +@@ -1879,6 +1913,8 @@ + || IMC_IDRAC_11G_MONOLITHIC == IMC_Type) + || (IMC_IDRAC_12G_MODULAR == IMC_Type + || IMC_IDRAC_12G_MONOLITHIC == IMC_Type) ++ || (IMC_IDRAC_13G_MODULAR == IMC_Type ++ || IMC_IDRAC_13G_MONOLITHIC == IMC_Type) + || (IMC_MASER_LITE_NU == IMC_Type || IMC_MASER_LITE_BMC== IMC_Type)) { + return ipmi_macinfo_11g(intf,NicNum); + } else { +@@ -1946,7 +1982,7 @@ + ipmi_lan_usage(); + return -1; + } +- if (iDRAC_FLAG == IDRAC_12G) { ++ if (iDRAC_FLAG_12_13) { + nic_selection = get_nic_selection_mode_12g(intf, current_arg, argv, + nic_set); + if (INVALID == nic_selection) { +@@ -2063,7 +2099,7 @@ + } + if (argv[current_arg] != NULL + && strncmp(argv[current_arg], "lom1\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type)) { + return INVAILD_SHARED_MODE; + } + if (failover) { +@@ -2082,7 +2118,7 @@ + return 0; + } else if (argv[current_arg] != NULL + && strncmp(argv[current_arg], "lom2\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type)) { + return INVAILD_SHARED_MODE; + } + if (failover) { +@@ -2101,7 +2137,7 @@ + return 0; + } else if (argv[current_arg] != NULL + && strncmp(argv[current_arg], "lom3\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type)) { + return INVAILD_SHARED_MODE; + } + if (failover) { +@@ -2120,7 +2156,7 @@ + return 0; + } else if (argv[current_arg] != NULL + && strncmp(argv[current_arg], "lom4\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type)) { + return INVAILD_SHARED_MODE; + } + if (failover) { +@@ -2139,7 +2175,7 @@ + return 0; + } else if (failover && argv[current_arg] != NULL + && strncmp(argv[current_arg], "none\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type) ) { + return INVAILD_SHARED_MODE; + } + if (failover) { +@@ -2159,7 +2195,7 @@ + current_arg++; + if (failover && argv[current_arg] != NULL + && strncmp(argv[current_arg], "loms\0", 5) == 0) { +- if (IMC_IDRAC_12G_MODULAR == IMC_Type) { ++ if ((IMC_IDRAC_12G_MODULAR == IMC_Type) || (IMC_IDRAC_13G_MODULAR == IMC_Type)) { + return INVAILD_SHARED_MODE; + } + if (nic_set[0] == 1) { +@@ -2242,7 +2278,8 @@ + lprintf(LOG_ERR, "Error in setting nic selection"); + return -1; + } else if( (nic_selection[0] == 1) +- && ((iDRAC_FLAG == IDRAC_12G) && (rsp->ccode == LICENSE_NOT_SUPPORTED))) { ++ && (( iDRAC_FLAG_12_13 ) ++ && (rsp->ccode == LICENSE_NOT_SUPPORTED))) { + /* Check license only for setting the dedicated nic. */ + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); +@@ -2297,7 +2334,7 @@ + input_length = 0; + req.msg.netfn = DELL_OEM_NETFN; + req.msg.lun = 0; +- if (iDRAC_FLAG == IDRAC_12G) { ++ if( iDRAC_FLAG_12_13 ) { + req.msg.cmd = GET_NIC_SELECTION_12G_CMD; + } else { + req.msg.cmd = GET_NIC_SELECTION_CMD; +@@ -2314,7 +2351,7 @@ + return -1; + } + nic_selection = rsp->data[0]; +- if (iDRAC_FLAG == IDRAC_12G) { ++ if( iDRAC_FLAG_12_13 ) { + nic_selection_failover = rsp->data[1]; + if ((nic_selection < 6) && (nic_selection > 0) + && (nic_selection_failover < 7)) { +@@ -2413,7 +2450,7 @@ + lprintf(LOG_NOTICE, + " sets the NIC Selection Mode :"); + lprintf(LOG_NOTICE, +-" on iDRAC12g :"); ++" on iDRAC12g OR iDRAC13g :"); + lprintf(LOG_NOTICE, + " dedicated, shared with lom1, shared with lom2,shared with lom3,shared"); + lprintf(LOG_NOTICE, +@@ -2433,7 +2470,7 @@ + lprintf(LOG_NOTICE, + " lan get "); + lprintf(LOG_NOTICE, +-" on iDRAC12g :"); ++" on iDRAC12g or iDRAC13g :"); + lprintf(LOG_NOTICE, + " returns the current NIC Selection Mode (dedicated, shared with lom1, shared"); + lprintf(LOG_NOTICE, +@@ -2662,7 +2699,7 @@ + if (rsp == NULL) { + lprintf(LOG_ERR, "Error getting powercap status"); + return -1; +- } else if((iDRAC_FLAG == IDRAC_12G) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { ++ } else if(( iDRAC_FLAG_12_13 ) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; /* Return Error as unlicensed */ +@@ -2713,7 +2750,7 @@ + if (rsp == NULL) { + lprintf(LOG_ERR, "Error setting powercap status"); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; /* return unlicensed Error code */ +@@ -2807,7 +2844,7 @@ + return -1; + } + +- if((iDRAC_FLAG == IDRAC_12G) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { ++ if((iDRAC_FLAG_12_13) && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -2910,7 +2947,7 @@ + if (rsp == NULL) { + lprintf(LOG_ERR, "Error clearing power values."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) ++ } else if ((iDRAC_FLAG_12_13) + && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); +@@ -2988,7 +3025,7 @@ + if (rsp == NULL) { + lprintf(LOG_ERR, "Error getting power headroom status"); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) ++ } else if ((iDRAC_FLAG_12_13) + && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); +@@ -3122,7 +3159,7 @@ + if (rsp == NULL) { + lprintf(LOG_ERR, "Error getting instantaneous power consumption data ."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) ++ } else if ((iDRAC_FLAG_12_13) + && (rsp->ccode == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); +@@ -3215,7 +3252,7 @@ + lprintf(LOG_ERR, + "Error getting average power consumption history data."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3264,7 +3301,7 @@ + if (rc < 0) { + lprintf(LOG_ERR, "Error getting peak power consumption history data."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3321,7 +3358,7 @@ + if (rc < 0) { + lprintf(LOG_ERR, "Error getting peak power consumption history data ."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3518,7 +3555,7 @@ + if (rc < 0) { + lprintf(LOG_ERR, "Error getting power cap."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3618,7 +3655,7 @@ + if (rc < 0) { + lprintf(LOG_ERR, "Error getting power cap."); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3698,7 +3735,7 @@ + if (rc < 0) { + lprintf(LOG_ERR, "Error setting power cap"); + return -1; +- } else if ((iDRAC_FLAG == IDRAC_12G) && (rc == LICENSE_NOT_SUPPORTED)) { ++ } else if ((iDRAC_FLAG_12_13) && (rc == LICENSE_NOT_SUPPORTED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); + return -1; +@@ -3860,7 +3897,7 @@ + + sdcardinfoblock = (IPMI_DELL_SDCARD_INFO *) (void *) rsp->data; + +- if ((iDRAC_FLAG == IDRAC_12G) ++ if ((iDRAC_FLAG_12_13) + && (sdcardinfoblock->vflashcompcode == VFL_NOT_LICENSED)) { + lprintf(LOG_ERR, + "FM001 : A required license is missing or expired"); diff --git a/debian/patches/series b/debian/patches/series index bc270d8..1239814 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ +120-Dell-13G.patch 115-lib_declarations.patch 097-source_typo.patch 098-manpage_typo.patch diff --git a/debian/rules b/debian/rules index 320b420..f2c9474 100755 --- a/debian/rules +++ b/debian/rules @@ -8,21 +8,12 @@ export DH_OPTIONS # # Hardening # -export DEB_BUILD_HARDENING=1 +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk -CFLAGS = -Wall -g - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - %: dh $@ --with systemd @@ -38,4 +29,3 @@ override_dh_installinit: override_dh_auto_configure: dh_auto_configure -- --prefix=/usr --with-kerneldir --mandir=/usr/share/man - -- cgit v1.2.3