Compare commits

..

No commits in common. "rawhide" and "f31" have entirely different histories.

11 changed files with 731 additions and 288 deletions

View file

@ -1,95 +0,0 @@
From c54147b3ada8c37a536a4df90e8707538021ed20 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Fri, 4 Feb 2022 09:21:47 -0800
Subject: [PATCH 1/1] fcoemon: add snprintf string precision modifiers in
fcm_netif_advance
GCC 12 is warning of potential snprintf truncations
fcm_netif.ifname is an IFNAMSIZ array, but formating with %s doesn't
understand that, so add a precision modifier every time we print it to
limit the output. This allows the compiler to verify that the output
buffer is of sufficient length to never truncate.
Signed-off-by: Chris Leech <cleech@redhat.com>
---
fcoemon.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/fcoemon.c b/fcoemon.c
index 8c08bc5a032..b85f276c7df 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -3135,55 +3135,55 @@ static void fcm_netif_advance(struct fcm_netif *ff)
case FCD_ERROR:
break;
case FCD_GET_DCB_STATE:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_CONFIG, FEATURE_DCB, 0,
- (u_int) strlen(ff->ifname), ff->ifname);
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname);
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_SEND_CONF:
snprintf(params, sizeof(params), "%x1%x02",
ff->ff_app_info.enable,
ff->ff_app_info.willing);
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_SET_CONFIG, FEATURE_APP, APP_FCOE_STYPE,
- (u_int) strlen(ff->ifname), ff->ifname, params);
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, params);
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_GET_PFC_CONFIG:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_CONFIG, FEATURE_PFC, 0,
- (u_int) strlen(ff->ifname), ff->ifname, "");
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, "");
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_GET_APP_CONFIG:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_CONFIG, FEATURE_APP, APP_FCOE_STYPE,
- (u_int) strlen(ff->ifname), ff->ifname, "");
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, "");
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_GET_PFC_OPER:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_OPER, FEATURE_PFC, 0,
- (u_int) strlen(ff->ifname), ff->ifname, "");
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, "");
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_GET_APP_OPER:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_OPER, FEATURE_APP, APP_FCOE_STYPE,
- (u_int) strlen(ff->ifname), ff->ifname, "");
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, "");
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_GET_PEER:
- snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%s%s",
+ snprintf(buf, sizeof(buf), "%c%x%2.2x%2.2x%2.2x%2.2x%.*s%s",
DCB_CMD, CLIF_RSP_VERSION,
CMD_GET_PEER, FEATURE_APP, APP_FCOE_STYPE,
- (u_int) strlen(ff->ifname), ff->ifname, "");
+ (u_int) strlen(ff->ifname), IFNAMSIZ, ff->ifname, "");
ff->response_pending = fcm_dcbd_request(buf);
break;
case FCD_DONE:
--
2.34.1

View file

@ -0,0 +1,490 @@
From 1bc240f074767a2c23efaf413d6ce96fdedcda2e Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 3 Jun 2019 18:37:59 -0700
Subject: [PATCH 1/1] use libbsd strlcpy
gcc7 fmt truncation errors
fix build warnings/errors with GCC format-truncation checks
more libbsd
---
Makefile.am | 17 ++++++++++-------
configure.ac | 2 ++
fcoeadm.c | 4 ++--
fcoeadm_display.c | 32 +++++++++++++++++++++++++-------
fcoemon.c | 37 +++++++++++++++++++++++--------------
fipvlan.c | 10 ++++++----
lib/rtnetlink.c | 2 +-
lib/sysfs_hba.c | 16 ++++++++--------
libopenfcoe.c | 19 +++++++++++++------
9 files changed, 90 insertions(+), 49 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index ba302e09d94..b8bc810af19 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,29 +9,32 @@ AM_CFLAGS = -Wall -Wformat=2 -Werror -Wmissing-prototypes -Wstrict-prototypes
## rules for building fcoeadm
fcoeadm_SOURCES = fcoeadm.c fcoeadm_display.c
-fcoeadm_LDADD = lib/libutil.a libopenfcoe.a $(PCIACCESS_LIBS)
-fcoeadm_CFLAGS = $(AM_CFLAGS)
+fcoeadm_LDADD = lib/libutil.a libopenfcoe.a $(PCIACCESS_LIBS) $(LIBBSD_LIBS)
+fcoeadm_CFLAGS = $(AM_CFLAGS) $(LIBBSD_CFLAGS)
## rules for building fcoemon
fcoemon_SOURCES = fcoemon.c
-fcoemon_LDADD = lib/libutil.a -lrt
-fcoemon_CFLAGS = $(AM_CFLAGS) $(DCBD_CFLAGS)
+fcoemon_LDADD = lib/libutil.a -lrt $(LIBBSD_LIBS)
+fcoemon_CFLAGS = $(AM_CFLAGS) $(DCBD_CFLAGS) $(LIBBSD_CFLAGS)
## rules for building fcping
fcping_SOURCES = fcping.c
-fcping_LDADD = lib/libutil.a libopenfcoe.a $(PCIACCESS_LIBS) -lrt
-fcping_CFLAGS = $(AM_CFLAGS)
+fcping_LDADD = lib/libutil.a libopenfcoe.a $(PCIACCESS_LIBS) -lrt $(LIBBSD_LIBS)
+fcping_CFLAGS = $(AM_CFLAGS) $(LIBBSD_CFLAGS)
## rules for building fipvlan
fipvlan_SOURCES = fipvlan.c
-fipvlan_LDADD = lib/libutil.a
+fipvlan_LDADD = lib/libutil.a $(LIBBSD_LIBS)
+fipvlan_CFLAGS = $(AM_CFLAGS) $(LIBBSD_CFLAGS)
AUTOMAKE_OPTIONS=subdir-objects
noinst_LIBRARIES = lib/libutil.a libopenfcoe.a
lib_libutil_a_SOURCES = lib/fcoe_utils.c lib/sa_log.c lib/sa_select.c \
lib/sa_timer.c lib/sa_other.c lib/fip.c lib/rtnetlink.c lib/sa_sys.c \
lib/sysfs_hba.c
+lib_libutil_a_CFLAGS = $(AM_CFLAGS) $(LIBBSD_CFLAGS)
libopenfcoe_a_SOURCES = libopenfcoe.c
+libopenfcoe_a_CFLAGS = $(AM_CFLAGS) $(LIBBSD_CFLAGS)
## header files that need to be distributed
noinst_HEADERS = fcoeadm_display.h fcoe_clif.h fcoemon.h \
diff --git a/configure.ac b/configure.ac
index 6bc073b221c..f1612e490cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13,6 +13,8 @@ AC_SUBST([LLDPAD_CFLAGS])
PKG_CHECK_MODULES([PCIACCESS], [pciaccess])
AC_SUBST([PCIACCESS_LIBS])
+PKG_CHECK_MODULES([LIBBSD], [libbsd-overlay])
+
PKG_PROG_PKG_CONFIG
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
diff --git a/fcoeadm.c b/fcoeadm.c
index 776b4e32b2e..6e143596129 100644
--- a/fcoeadm.c
+++ b/fcoeadm.c
@@ -186,7 +186,7 @@ fcoeadm_action(enum clif_action cmd, char *ifname, enum clif_flags flags)
int rc;
if (ifname)
- strncpy(data.ifname, ifname, sizeof(data.ifname));
+ strlcpy(data.ifname, ifname, sizeof(data.ifname));
else
data.ifname[0] = '\0';
data.cmd = cmd;
@@ -231,7 +231,7 @@ int main(int argc, char *argv[])
* This has to be first because the error print macro
* expects progname to be valid.
*/
- strncpy(progname, basename(argv[0]), sizeof(progname));
+ strlcpy(progname, basename(argv[0]), sizeof(progname));
/* check if we have sysfs */
if (fcoe_checkdir(SYSFS_MOUNT)) {
diff --git a/fcoeadm_display.c b/fcoeadm_display.c
index 120c6084b7c..2c6214db29a 100644
--- a/fcoeadm_display.c
+++ b/fcoeadm_display.c
@@ -254,6 +254,7 @@ static void show_full_lun_info(unsigned int hba, unsigned int port,
struct dirent *dp;
struct port_attributes *rport_attrs;
struct port_attributes *port_attrs;
+ int rc;
snprintf(path, sizeof(path),
"/sys/class/scsi_device/%u:%u:%u:%u",
@@ -267,13 +268,13 @@ static void show_full_lun_info(unsigned int hba, unsigned int port,
if (!port_attrs)
goto free_rport;
- strncat(path, "/device/", sizeof(path) - strlen(path) - 1);
+ strlcat(path, "/device/", sizeof(path));
sa_sys_read_line(path, "rev", rev, sizeof(rev));
sa_sys_read_line(path, "model", model, sizeof(model));
sa_sys_read_line(path, "vendor", vendor, sizeof(vendor));
- strncat(path, "block", sizeof(path) - strlen(path) - 1);
+ strlcat(path, "block", sizeof(path));
dir = opendir(path);
if (!dir)
@@ -287,10 +288,18 @@ static void show_full_lun_info(unsigned int hba, unsigned int port,
osname = dp->d_name;
- snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u64(npath, "size", &lba);
- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u32(npath, "hw_sector_size", &blksize);
}
@@ -340,6 +349,7 @@ static void show_short_lun_info(unsigned int hba, unsigned int port,
char *capstr = "Unknown";
char *osname = "Unknown";
uint64_t size;
+ int rc;
snprintf(path, sizeof(path),
"/sys/class/scsi_device/%u:%u:%u:%u/device/",
@@ -349,7 +359,7 @@ static void show_short_lun_info(unsigned int hba, unsigned int port,
sa_sys_read_line(path, "model", model, sizeof(model));
sa_sys_read_line(path, "vendor", vendor, sizeof(vendor));
- strncat(path, "block", sizeof(path) - strlen(path) - 1);
+ strlcat(path, "block", sizeof(path));
dir = opendir(path);
if (!dir)
@@ -363,10 +373,18 @@ static void show_short_lun_info(unsigned int hba, unsigned int port,
osname = dp->d_name;
- snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u64(npath, "size", &size);
- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u32(npath, "hw_sector_size", &blksize);
}
diff --git a/fcoemon.c b/fcoemon.c
index 9af0f1284af..10f978b19ec 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -378,8 +378,8 @@ static int fcm_remove_quotes(char *buf, int len)
return -1;
s = buf + 1;
*e = '\0';
- strncpy(tmp, s, len - 1);
- strncpy(buf, tmp, len - 1);
+ strlcpy(tmp, s, len);
+ strlcpy(buf, tmp, len);
return 0;
}
@@ -516,8 +516,8 @@ static int fcm_read_config_files(void)
dp->d_name);
continue;
}
- strncpy(file, CONFIG_DIR "/", sizeof(file));
- strncat(file, dp->d_name, sizeof(file) - strlen(file));
+ strlcpy(file, CONFIG_DIR "/", sizeof(file));
+ strlcat(file, dp->d_name, sizeof(file));
fp = fopen(file, "r");
if (!fp) {
FCM_LOG_ERR(errno, "Failed to read %s\n", file);
@@ -937,6 +937,7 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn)
[false] = CLIF_FLAGS_FABRIC,
[true] = CLIF_FLAGS_VN2VN,
};
+ int rc;
if (vn2vn)
FCM_LOG_DBG("Auto VLAN found vn2vn on VID %d\n", vid);
@@ -945,8 +946,15 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn)
if (rtnl_find_vlan(ifindex, vid, vlan_name)) {
rtnl_get_linkname(ifindex, real_name);
- snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT,
- real_name, vid);
+ rc = snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT,
+ real_name, vid);
+ if (rc >= sizeof(vlan_name)) {
+ FCM_LOG("Warning: Generating FCoE VLAN device name for"
+ "interface %s VLAN %d: format resulted in a"
+ "name larger than IFNAMSIZ\n", real_name, vid);
+ vlan_name[sizeof(vlan_name) - 1] = 0;
+ FCM_LOG("\tTruncating VLAN name to %s\n", vlan_name);
+ }
vlan_create(ifindex, vid, vlan_name);
}
rtnl_set_iff_up(0, vlan_name);
@@ -1087,9 +1095,10 @@ static void fcm_vlan_dev_real_dev(char *vlan_ifname, char *real_ifname)
memset(&ifv, 0, sizeof(ifv));
ifv.cmd = GET_VLAN_REALDEV_NAME_CMD;
- strncpy(ifv.device1, vlan_ifname, strlen(vlan_ifname)+1);
+ strlcpy(ifv.device1, vlan_ifname, sizeof(ifv.device1));
+
if (ioctl(fd, SIOCGIFVLAN, &ifv) == 0)
- strncpy(real_ifname, ifv.u.device2, strlen(ifv.u.device2)+1);
+ strlcpy(real_ifname, ifv.u.device2, IFNAMSIZ);
close(fd);
}
@@ -1318,7 +1327,7 @@ static void ieee_get_req(struct fcm_netif *ff)
msg.dcbmsg.dcb_pad = 0;
msg.rta.rta_len = NLMSG_ALIGN(NLA_HDRLEN + iflen + 1);
msg.rta.rta_type = DCB_ATTR_IFNAME;
- strncpy(msg.ifname, ff->ifname, iflen);
+ strlcpy(msg.ifname, ff->ifname, IFNAMSIZ);
ff->ieee_resp_pending = seq;
rc = write(fcm_link_socket, &msg, msg.nl.nlmsg_len);
if (rc < 0) {
@@ -1641,7 +1650,7 @@ static void fcm_process_link_msg(struct ifinfomsg *ip, int len, unsigned type)
real_dev[0] = '\0';
fcm_vlan_dev_real_dev(ifname, real_dev);
if (strlen(real_dev))
- strncpy(p->real_ifname, real_dev, strlen(real_dev)+1);
+ strlcpy(p->real_ifname, real_dev, IFNAMSIZ);
if (p->ready)
update_fcoe_port_state(p, type, operstate,
FCP_CFG_IFNAME);
@@ -1653,7 +1662,7 @@ static void fcm_process_link_msg(struct ifinfomsg *ip, int len, unsigned type)
if (p) {
p->ifindex = ifindex;
memcpy(p->mac, mac, ETHER_ADDR_LEN);
- strncpy(p->real_ifname, ifname, strlen(ifname)+1);
+ strlcpy(p->real_ifname, ifname, IFNAMSIZ);
update_fcoe_port_state(p, type, operstate,
FCP_REAL_IFNAME);
}
@@ -1781,7 +1790,7 @@ static void fcm_process_ieee_msg(struct nlmsghdr *nlh)
if (rta_parent->rta_type != DCB_ATTR_IFNAME)
return;
- strncpy(ifname, NLA_DATA(rta_parent), sizeof(ifname));
+ strlcpy(ifname, NLA_DATA(rta_parent), IFNAMSIZ);
ff = fcm_netif_lookup_create(ifname);
if (!ff) {
FCM_LOG("Processing IEEE message: %s not found or created\n",
@@ -3531,7 +3540,7 @@ static void fcm_srv_receive(void *arg)
}
cmd = data->cmd;
- strncpy(ifname, data->ifname, sizeof(data->ifname));
+ strlcpy(ifname, data->ifname, IFNAMSIZ);
ifname[sizeof(data->ifname)] = 0;
if (cmd != CLIF_PID_CMD) {
@@ -3686,7 +3695,7 @@ int main(int argc, char **argv)
memset(&fcoe_config, 0, sizeof(fcoe_config));
- strncpy(progname, basename(argv[0]), sizeof(progname));
+ strlcpy(progname, basename(argv[0]), sizeof(progname));
sa_log_prefix = progname;
sa_log_flags = 0;
openlog(sa_log_prefix, LOG_CONS, LOG_DAEMON);
diff --git a/fipvlan.c b/fipvlan.c
index 7c00c7c2fec..1d6ca61d738 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -448,7 +448,7 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh)
else
iff->iflink = iff->ifindex;
memcpy(iff->mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), ETHER_ADDR_LEN);
- strncpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ);
+ strlcpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ);
if (ifla[IFLA_LINKINFO]) {
parse_linkinfo(linkinfo, ifla[IFLA_LINKINFO]);
@@ -542,7 +542,7 @@ static void parse_cmdline(int argc, char **argv)
break;
case 'f':
if (optarg && strlen(optarg))
- strncpy(config.suffix, optarg, 256);
+ strlcpy(config.suffix, optarg, 256);
break;
case 'l':
config.link_retry = strtoul(optarg, NULL, 10);
@@ -621,8 +621,10 @@ create_and_start_vlan(struct fcf *fcf, bool vn2vn)
real_dev->ifname, fcf->vlan, vlan->ifname);
rc = 0;
} else {
- snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
- real_dev->ifname, fcf->vlan, config.suffix);
+ rc = snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
+ real_dev->ifname, fcf->vlan, config.suffix);
+ if (rc >= IFNAMSIZ)
+ return -E2BIG;
rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name);
if (rc < 0)
printf("Failed to create VLAN device %s\n\t%s\n",
diff --git a/lib/rtnetlink.c b/lib/rtnetlink.c
index 3b841371899..07518e39224 100644
--- a/lib/rtnetlink.c
+++ b/lib/rtnetlink.c
@@ -378,7 +378,7 @@ static int rtnl_getlinkname_handler(struct nlmsghdr *nh, void *arg)
switch (nh->nlmsg_type) {
case RTM_NEWLINK:
parse_ifinfo(ifla, nh);
- strncpy(name, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ);
+ strlcpy(name, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ);
return 0;
}
return -1;
diff --git a/lib/sysfs_hba.c b/lib/sysfs_hba.c
index 786215440ba..6db5ece3754 100644
--- a/lib/sysfs_hba.c
+++ b/lib/sysfs_hba.c
@@ -214,13 +214,13 @@ static void get_pci_device_info(struct pci_device *dev, struct hba_info *info)
if (!vname)
vname = unknown;
- strncpy(info->manufacturer, vname, sizeof(info->manufacturer));
+ strlcpy(info->manufacturer, vname, sizeof(info->manufacturer));
dname = pci_device_get_device_name(dev);
if (!dname)
dname = unknown;
- strncpy(info->model_description, dname,
+ strlcpy(info->model_description, dname,
sizeof(info->model_description));
pci_device_cfg_read_u8(dev, &revision, PCI_REVISION_ID);
@@ -238,8 +238,8 @@ static void get_module_info(const char *pcidev, struct hba_info *info)
char *path;
int err;
- strncpy(info->driver_name, "Unknown", sizeof(info->driver_name));
- strncpy(info->driver_version, "Unknown", sizeof(info->driver_version));
+ strlcpy(info->driver_name, "Unknown", sizeof(info->driver_name));
+ strlcpy(info->driver_version, "Unknown", sizeof(info->driver_version));
err = asprintf(&path, "/sys/bus/pci/devices/%s/driver/module", pcidev);
if (err == -1)
@@ -256,7 +256,7 @@ static void get_module_info(const char *pcidev, struct hba_info *info)
buf[err] = '\0';
if (strstr(buf, "module"))
- strncpy(info->driver_name,
+ strlcpy(info->driver_name,
strstr(buf, "module") + strlen("module") + 1,
sizeof(info->driver_name));
@@ -315,7 +315,7 @@ struct port_attributes *get_rport_attribs(const char *rport)
if (!pa)
goto free_path;
- strncpy(pa->device_name, rport, sizeof(pa->device_name));
+ strlcpy(pa->device_name, rport, sizeof(pa->device_name));
sa_sys_read_line(path, "node_name", pa->node_name,
sizeof(pa->node_name));
sa_sys_read_line(path, "port_name", pa->port_name,
@@ -390,7 +390,7 @@ struct port_attributes *get_port_attribs(const char *host)
if (!pa)
goto free_path;
- strncpy(pa->device_name, host, sizeof(pa->device_name));
+ strlcpy(pa->device_name, host, sizeof(pa->device_name));
sa_sys_read_line(path, "symbolic_name", pa->symbolic_name,
sizeof(pa->symbolic_name));
@@ -443,7 +443,7 @@ char *get_pci_dev_from_netdev(const char *netdev)
return NULL;
len = strlen(netdev) - strlen(subif);
- strncpy(realdev, netdev, len);
+ strlcpy(realdev, netdev, sizeof(realdev));
if (realdev[len] != '\0')
realdev[len] = '\0';
diff --git a/libopenfcoe.c b/libopenfcoe.c
index 07090d5a09a..27389bac9ec 100644
--- a/libopenfcoe.c
+++ b/libopenfcoe.c
@@ -59,6 +59,7 @@ static int add_fcoe_fcf_device(struct dirent *dp, void *arg)
{
struct fcoe_ctlr_device *ctlr = (struct fcoe_ctlr_device *)arg;
struct fcoe_fcf_device *fcf;
+ int rc;
if (!strstr(dp->d_name, "fcf") ||
(!strcmp(dp->d_name, "fcf_dev_loss_tmo")))
@@ -71,8 +72,10 @@ static int add_fcoe_fcf_device(struct dirent *dp, void *arg)
memset(fcf, 0, sizeof(struct fcoe_fcf_device));
/* Save the path */
- snprintf(fcf->path, sizeof(fcf->path),
- "%s/%s", ctlr->path, dp->d_name);
+ rc = snprintf(fcf->path, sizeof(fcf->path),
+ "%s/%s", ctlr->path, dp->d_name);
+ if (rc >= sizeof(fcf->path))
+ goto fail;
/* Use the index from the logical enumeration */
fcf->index = atoi(dp->d_name + sizeof("fcf_") - 1);
@@ -140,7 +143,7 @@ static int find_fchost(struct dirent *dp, void *arg)
char *fchost = arg;
if (strstr(dp->d_name, "host")) {
- strncpy(fchost, dp->d_name, MAX_STR_LEN);
+ strlcpy(fchost, dp->d_name, MAX_STR_LEN);
return 1;
}
@@ -179,7 +182,9 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg)
if (!rc)
goto fail;
- sprintf(hpath, "%s/%s/", SYSFS_FCHOST, fchost);
+ rc = snprintf(hpath, MAX_STR_LEN, "%s/%s/", SYSFS_FCHOST, fchost);
+ if (rc < 0 || rc >= MAX_STR_LEN)
+ goto fail;
rc = sa_sys_read_line(hpath, "symbolic_name", buf, sizeof(buf));
@@ -189,7 +194,7 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg)
goto fail;
ifname = get_ifname_from_symbolic_name(buf);
- strncpy(ctlr->ifname, ifname, IFNAMSIZ-1);
+ strlcpy(ctlr->ifname, ifname, IFNAMSIZ);
/* Get fcf device loss timeout */
sa_sys_read_u32(ctlr->path, "fcf_dev_loss_tmo",
@@ -198,7 +203,9 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg)
sa_sys_read_line(ctlr->path, "mode", buf, sizeof(buf));
sa_enum_encode(fip_conn_type_table, buf, &ctlr->mode);
- snprintf(lesb_path, sizeof(lesb_path), "%s/lesb/", ctlr->path);
+ rc = snprintf(lesb_path, sizeof(lesb_path), "%s/lesb/", ctlr->path);
+ if (rc >= sizeof(lesb_path))
+ goto fail;
/* Get LESB statistics */
sa_sys_read_u32(lesb_path, "link_fail",
--
2.21.0

View file

@ -1,34 +0,0 @@
From 78a5e2e17bba531b41101ca036a5bb1a0d5caca5 Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh@redhat.com>
Date: Tue, 6 Feb 2024 21:15:33 -0500
Subject: [PATCH 2/2] Don't attempt to memcpy() zero bytes
add_rtattr_nest() is called in several places in the code. As part of
its operation, it calls add_rtattr(nm type, NULL, 0) which results in
NULL and 0 being passed to memcpy(). This fails with -Werror=nonnull
on recent GCC.
Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
---
lib/rtnetlink.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/rtnetlink.c b/lib/rtnetlink.c
index 3b8413718997568a20752791807b19c1f299955e..faa60d7c12f68af175d223b6c3c3257a982e4f37 100644
--- a/lib/rtnetlink.c
+++ b/lib/rtnetlink.c
@@ -172,7 +172,10 @@ static void add_rtattr(struct nlmsghdr *n, int type, const void *data, int alen)
rta->rta_type = type;
rta->rta_len = len;
- memcpy(RTA_DATA(rta), data, alen);
+ if (alen > 0)
+ {
+ memcpy(RTA_DATA(rta), data, alen);
+ }
n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + RTA_ALIGN(len);
}
--
2.43.0

View file

@ -1,44 +0,0 @@
From dfadd3fd53860a8f44871e479bf602a2fa3bae53 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 6 Jan 2026 16:20:49 -0800
Subject: [PATCH 1/1] =?UTF-8?q?initialization=20discards=20=E2=80=98const?=
=?UTF-8?q?=E2=80=99=20qualifier=20from=20pointer=20target=20type?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Chris Leech <cleech@redhat.com>
---
lib/fcoe_utils.c | 2 +-
lib/sysfs_hba.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/fcoe_utils.c b/lib/fcoe_utils.c
index 4d13dd7ecf9..5ea713679a5 100644
--- a/lib/fcoe_utils.c
+++ b/lib/fcoe_utils.c
@@ -161,7 +161,7 @@ int fcoe_checkdir(char *dir)
*/
char *get_ifname_from_symbolic_name(const char *symbolic_name)
{
- char *last_space = strrchr(symbolic_name, ' ');
+ const char *last_space = strrchr(symbolic_name, ' ');
if (!last_space || strlen(last_space) == 1)
return NULL;
diff --git a/lib/sysfs_hba.c b/lib/sysfs_hba.c
index 381f335d7ea..302ce634954 100644
--- a/lib/sysfs_hba.c
+++ b/lib/sysfs_hba.c
@@ -441,7 +441,7 @@ char *get_pci_dev_from_netdev(const char *netdev)
free(path);
if (ret == -1) {
char realdev[256];
- char *subif;
+ const char *subif;
size_t len;
subif = strchr(netdev, '.');
--
2.52.0

View file

@ -0,0 +1,53 @@
diff --git a/fipvlan.c b/fipvlan.c
index 7c00c7c..065b742 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -621,8 +621,10 @@ create_and_start_vlan(struct fcf *fcf, bool vn2vn)
real_dev->ifname, fcf->vlan, vlan->ifname);
rc = 0;
} else {
- snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
- real_dev->ifname, fcf->vlan, config.suffix);
+ rc = snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
+ real_dev->ifname, fcf->vlan, config.suffix);
+ if (rc >= IFNAMSIZ)
+ return -E2BIG;
rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name);
if (rc < 0)
printf("Failed to create VLAN device %s\n\t%s\n",
diff --git a/libopenfcoe.c b/libopenfcoe.c
index 07090d5..98fb975 100644
--- a/libopenfcoe.c
+++ b/libopenfcoe.c
@@ -59,6 +59,7 @@ static int add_fcoe_fcf_device(struct dirent *dp, void *arg)
{
struct fcoe_ctlr_device *ctlr = (struct fcoe_ctlr_device *)arg;
struct fcoe_fcf_device *fcf;
+ int rc;
if (!strstr(dp->d_name, "fcf") ||
(!strcmp(dp->d_name, "fcf_dev_loss_tmo")))
@@ -71,8 +72,10 @@ static int add_fcoe_fcf_device(struct dirent *dp, void *arg)
memset(fcf, 0, sizeof(struct fcoe_fcf_device));
/* Save the path */
- snprintf(fcf->path, sizeof(fcf->path),
- "%s/%s", ctlr->path, dp->d_name);
+ rc = snprintf(fcf->path, sizeof(fcf->path),
+ "%s/%s", ctlr->path, dp->d_name);
+ if (rc >= sizeof(fcf->path))
+ goto fail;
/* Use the index from the logical enumeration */
fcf->index = atoi(dp->d_name + sizeof("fcf_") - 1);
@@ -198,7 +201,9 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg)
sa_sys_read_line(ctlr->path, "mode", buf, sizeof(buf));
sa_enum_encode(fip_conn_type_table, buf, &ctlr->mode);
- snprintf(lesb_path, sizeof(lesb_path), "%s/lesb/", ctlr->path);
+ rc = snprintf(lesb_path, sizeof(lesb_path), "%s/lesb/", ctlr->path);
+ if (rc >= sizeof(lesb_path))
+ goto fail;
/* Get LESB statistics */
sa_sys_read_u32(lesb_path, "link_fail",

View file

@ -0,0 +1,119 @@
From: Chris Leech <cleech@redhat.com>
Subject: fix build warnings/errors with GCC format-truncation checks
diff --git a/fcoeadm_display.c b/fcoeadm_display.c
index 120c6084b7ca..f10cfb53d454 100644
--- a/fcoeadm_display.c
+++ b/fcoeadm_display.c
@@ -254,6 +254,7 @@ static void show_full_lun_info(unsigned int hba, unsigned int port,
struct dirent *dp;
struct port_attributes *rport_attrs;
struct port_attributes *port_attrs;
+ int rc;
snprintf(path, sizeof(path),
"/sys/class/scsi_device/%u:%u:%u:%u",
@@ -287,10 +288,18 @@ static void show_full_lun_info(unsigned int hba, unsigned int port,
osname = dp->d_name;
- snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u64(npath, "size", &lba);
- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u32(npath, "hw_sector_size", &blksize);
}
@@ -340,6 +349,7 @@ static void show_short_lun_info(unsigned int hba, unsigned int port,
char *capstr = "Unknown";
char *osname = "Unknown";
uint64_t size;
+ int rc;
snprintf(path, sizeof(path),
"/sys/class/scsi_device/%u:%u:%u:%u/device/",
@@ -363,10 +373,18 @@ static void show_short_lun_info(unsigned int hba, unsigned int port,
osname = dp->d_name;
- snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u64(npath, "size", &size);
- snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ rc = snprintf(npath, sizeof(npath), "%s/%s/queue/", path, osname);
+ if (rc < 0 || rc >= sizeof(npath)) {
+ /* error or truncation, bailing out */
+ return;
+ }
sa_sys_read_u32(npath, "hw_sector_size", &blksize);
}
diff --git a/fcoemon.c b/fcoemon.c
index 9a400c56b72a..bf73a0d4c89e 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -939,6 +939,7 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn)
[false] = CLIF_FLAGS_FABRIC,
[true] = CLIF_FLAGS_VN2VN,
};
+ int rc;
if (vn2vn)
FCM_LOG_DBG("Auto VLAN found vn2vn on VID %d\n", vid);
@@ -947,8 +948,15 @@ static struct fcoe_port *fcm_new_vlan(int ifindex, int vid, bool vn2vn)
if (rtnl_find_vlan(ifindex, vid, vlan_name)) {
rtnl_get_linkname(ifindex, real_name);
- snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT,
- real_name, vid);
+ rc = snprintf(vlan_name, sizeof(vlan_name), FCOE_VLAN_FORMAT,
+ real_name, vid);
+ if (rc >= sizeof(vlan_name)) {
+ FCM_LOG("Warning: Generating FCoE VLAN device name for"
+ "interface %s VLAN %d: format resulted in a"
+ "name larger than IFNAMSIZ\n", real_name, vid);
+ vlan_name[sizeof(vlan_name) - 1] = 0;
+ FCM_LOG("\tTruncating VLAN name to %s\n", vlan_name);
+ }
vlan_create(ifindex, vid, vlan_name);
}
rtnl_set_iff_up(0, vlan_name);
@@ -3549,7 +3557,7 @@ static void fcm_srv_receive(void *arg)
}
cmd = data->cmd;
- strncpy(ifname, data->ifname, sizeof(data->ifname));
+ strncpy(ifname, data->ifname, sizeof(ifname) - 1);
ifname[sizeof(data->ifname)] = 0;
if (cmd != CLIF_PID_CMD) {
diff --git a/libopenfcoe.c b/libopenfcoe.c
index 07090d5a09aa..c1190adc2328 100644
--- a/libopenfcoe.c
+++ b/libopenfcoe.c
@@ -179,7 +179,9 @@ static int read_fcoe_ctlr_device(struct dirent *dp, void *arg)
if (!rc)
goto fail;
- sprintf(hpath, "%s/%s/", SYSFS_FCHOST, fchost);
+ rc = snprintf(hpath, MAX_STR_LEN, "%s/%s/", SYSFS_FCHOST, fchost);
+ if (rc < 0 || rc >= MAX_STR_LEN)
+ goto fail;
rc = sa_sys_read_line(hpath, "symbolic_name", buf, sizeof(buf));

View file

@ -1,25 +1,29 @@
# https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags
%global _hardened_build 1
# v1.0.34-2
%global commit0 b233050792cc5fa54ba1da257706ca2b5ef3c987
# v1.0.32-3-g9834b340d82
%global commit0 9834b340d8289bab48d961b6bb2698bab1f3965f
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
Name: fcoe-utils
Version: 1.0.34
Release: 13.git%{shortcommit0}%{?dist}
Version: 1.0.32
Release: 9.git%{shortcommit0}%{?dist}
Summary: Fibre Channel over Ethernet utilities
License: GPL-2.0-only
License: GPLv2
URL: http://www.open-fcoe.org
Source0: https://github.com/openSUSE/fcoe-utils/archive/%{commit0}.tar.gz#/%{name}-%{version}-%{shortcommit0}.tar.gz
Source0: https://github.com/morbidrsa/fcoe-utils/archive/%{commit0}.tar.gz#/%{name}-%{version}-%{shortcommit0}.tar.gz
Source1: quickstart.txt
Source2: fcoe.service
Source3: fcoe.config
ExcludeArch: ppc s390
Patch0: 0001-string-warning-fixes.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: libpciaccess-devel
BuildRequires: libtool
BuildRequires: lldpad-devel >= 0.9.43
BuildRequires: systemd
BuildRequires: make
BuildRequires: libbsd-devel
Requires: lldpad >= 0.9.43
Requires: iproute
Requires: device-mapper-multipath
@ -27,16 +31,6 @@ Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Patch1: 0001-fcoemon-add-snprintf-string-precision-modifiers-in-f.patch
# https://github.com/openSUSE/fcoe-utils/pull/25
Patch2: 0002-Don-t-attempt-to-memcpy-zero-bytes.patch
Patch3: 0003-initialization-discards-const-qualifier-from-pointer.patch
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
%description
Fibre Channel over Ethernet utilities
fcoeadm - command line tool for configuring FCoE interfaces
@ -44,132 +38,50 @@ fcoemon - service to configure DCB Ethernet QOS filters, works with lldpad
%prep
%autosetup -p1 -n fcoe-utils-%{commit0}
%if 0%{?rhel} >= 8
# RHEL dropped support for software fcoe (fcoe.ko)
sed -i 's/^\(SUPPORTED_DRIVERS\)=".*"$/\1="bnx2fc qedf"/' etc/config
# make the defaults sane for supported offload drivers
sed -i 's/^\(DCB_REQUIRED\)=".*"$/\1="no"/' etc/cfg-ethx
%endif
cp -v %{SOURCE1} quickstart.txt
%build
./bootstrap.sh
%configure --with-systemdsystemunitdir=%{_unitdir}
%configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
rm -rf %{buildroot}/etc/init.d
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig %{buildroot}%{_unitdir}
rm -f %{buildroot}%{_unitdir}/*
install -m 644 %{SOURCE2} %{buildroot}%{_unitdir}
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/fcoe
mkdir -p %{buildroot}%{_libexecdir}/fcoe
for file in \
contrib/*.sh \
debug/*sh
do install -m 755 ${file} %{buildroot}%{_libexecdir}/fcoe/
done
# We supply our own config for fcoe.service
rm -f %{buildroot}/%{_sysconfdir}/fcoe/config
%post
%systemd_post fcoe.service fcoemon.socket
%systemd_post fcoe.service
%preun
%systemd_preun fcoe.service fcoemon.socket
%systemd_preun fcoe.service
%postun
%systemd_postun_with_restart fcoe.service fcoemon.socket
%systemd_postun_with_restart fcoe.service
%files
%doc README COPYING QUICKSTART
%doc README COPYING QUICKSTART quickstart.txt
%{_sbindir}/*
%{_mandir}/man8/*
%{_unitdir}/fcoe.service
%{_unitdir}/fcoemon.socket
%{_sysconfdir}/fcoe/
%config(noreplace) %{_sysconfdir}/fcoe/cfg-ethx
%config(noreplace) %{_sysconfdir}/fcoe/config
%{_datadir}/bash-completion/completions/*
%config(noreplace) %{_sysconfdir}/sysconfig/fcoe
%{_sysconfdir}/bash_completion.d/*
%{_libexecdir}/fcoe/
%changelog
* Wed Jan 07 2026 Chris Leech <cleech@redhat.com> - 1.0.34-13.gitb233050
- FTBFS: GCC 16 -Werror=discarded-qualifiers
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-12.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-11.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-10.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Feb 06 2024 Stephen Gallagher <sgallagh@redhat.com> - 1.0.34-9.gitb233050
- FTBFS: Don't attempt to memcpy() zero bytes
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-8.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-7.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Oct 30 2023 Chris Leech <cleech@redhat.com> - 1.0.34-6.gitb233050
- use SPDX in license tag
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-5.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-4.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-3.gitb233050
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Feb 04 2022 Chris Leech <cleech@redhat.com> - 1.0.34-2.gitb233050
- FTBFS: more gcc 12 snprintf truncation issues on 32-bit arch
* Fri Jan 28 2022 Chris Leech <cleech@redhat.com> - 1.0.34-1.gitb233050
- FTBFS: update with gcc 12 fix from upstream
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-0.git14ef0d2.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.34-0.git14ef0d2.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Apr 14 2021 Chris Leech <cleech@redhat.com> - 1.0.34-0.git14ef0d2
- upstream 1.0.34
- drop gcc11 warning disabling patch, warnings have been addressed upstream
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.33-6.git848bcc6
- Rebuilt for updated systemd-rpm-macros
See https://pagure.io/fesco/issue/2583.
* Tue Feb 02 2021 Chris Leech <cleech@redhat.com> - 1.0.33-5.git848bcc6
- add in RHEL conditional for removed fcoe.ko support
* Mon Feb 01 2021 Chris Leech <cleech@redhat.com> - 1.0.33-4.git848bcc6
- drop any differences with upstream service and config files
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.33-3.gitfe376de
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Sat Nov 14 2020 Jeff Law <law@redhat.com> - 1.0.33-2.gitfe376de
- Disable fatal diagnostic from gcc-11 for fping
* Wed Oct 28 2020 Jeff Law <law@redhat.com> - 1.0.33-1.gitfe376de
- Disable fatal diagnostics from gcc-11 for fipvlan
* Mon Sep 21 2020 Chris Leech <cleech@redhat.com> - 1.0.33-0.gitfe376de
- FTBFS: fix gcc 10.2 truncation and overflow errors
- rebase to 1.0.33+ from new upstream location
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.32-12.git9834b34
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.32-11.git9834b34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.32-10.git9834b34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.32-9.git9834b34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

5
fcoe.config Normal file
View file

@ -0,0 +1,5 @@
# All supported drivers listed here are loaded when service starts
SUPPORTED_DRIVERS="libfc fcoe bnx2fc"
# Add --debug to enable debug messages
FCOEMON_OPTS="--syslog"

12
fcoe.service Normal file
View file

@ -0,0 +1,12 @@
[Unit]
Description=Open-FCoE Inititator.
After=syslog.target network.target lldpad.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/fcoe
ExecStartPre=/sbin/modprobe -qa $SUPPORTED_DRIVERS
ExecStart=/usr/sbin/fcoemon $FCOEMON_OPTS
[Install]
WantedBy=multi-user.target

25
quickstart.txt Normal file
View file

@ -0,0 +1,25 @@
Quick Start guide for Open-FCoE
===============================
1. Install fcoe-utils package. This should also install dcbd, libhbaapi and
libhbalinux as dependencies.
2. Rename /etc/fcoe/cfg-ethx so it corresponds with name of your network
interface (e.g. /etc/fcoe/cfg-eth0). Copy and rename this file accordingly
if you have more interfaces, which should be fcoe-enabled
3. Modify configuration files to enable FCoE. Set FCOE_ENABLE="yes" and
DCB_REQUIRED="yes".
3. Run 'systemctl enable fcoe.service' to start FCoE per run level. This
will setup FCoE to start on reboot.
4. Run 'systemctl enable lldpad.service' to start LLDP agent per run
level. This will setup DCB to start on reboot.
5. Run 'systemctl start lldpad.service' to start LLDP agent.
6. Run 'dcbtool sc ethX dcb on; dcbtool sc ethX app:0 e:1;' for each fcoe-enabled
interface to setup DCB for FCoE.
7. Run 'systemctl start fcoe.sertvice' to start FCoE.

View file

@ -1 +1 @@
SHA512 (fcoe-utils-1.0.34-b233050.tar.gz) = 8fc7df765fb7a2a17f9d3b9ce67b2499b7f602671d75be663cb7a668b0cbdfe7126796548c16496dac964549c695de844e6599c026a71f3b67d3d5fe6c29f858
SHA512 (fcoe-utils-1.0.32-9834b34.tar.gz) = bbe9af0b277fd1b5e0a14b5865fdaa5812142cce33a2440a9ecf44e0607a4284d1a3402c72b4a3408f5aa87dafbb19de9c22f3a45cc35d092901475f9cddcc0a