etc/dracut.conf
+lib/udev/network-aqm
+lib/udev/network-hotplug-bridges
+lib/udev/rules.d/99-aqm.rules
+srv/web/ipfire/cgi-bin/qos.cgi
srv/web/ipfire/cgi-bin/ovpnmain.cgi
srv/web/ipfire/cgi-bin/vpnmain.cgi
srv/web/ipfire/html/themes/ipfire/include/functions.pl
var/ipfire/backup/bin/backup.pl
var/ipfire/dhcp/advoptions-list
+var/ipfire/qos/bin/makeqosscripts.pl
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
-# Copyright (C) 2021 IPFire-Team <info@ipfire.org>. #
+# Copyright (C) 2022 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
/lib/firmware/cxgb4/t4fw-1.25.4.0.bin \
/lib/firmware/cxgb4/t5fw-1.25.4.0.bin \
/lib/firmware/cxgb4/t6fw-1.25.4.0.bin \
- /lib/firmware/intel/ice/ddp/ice-1.3.16.0.pkg
+ /lib/firmware/intel/ice/ddp/ice-1.3.16.0.pkg \
+ /lib/udev/enable_codel \
+ /lib/udev/rules.d/99-codel.rules
# Stop services
+/usr/local/bin/qosctrl stop
# Extract files
extract_files
/etc/init.d/apache restart
/etc/init.d/unbound restart
/etc/init.d/squid restart
+/usr/local/bin/qosctrl generate
+/usr/local/bin/qosctrl start
# rebuild initrd
dracut --force --early-microcode --strip --verbose --xz
# Filesystem support
inst_multiple parted mkswap mke2fs mkreiserfs mkfs.xfs mkfs.vfat
- instmods ext4 iso9660 reiserfs vfat xfs
+ instmods ext4 iso9660 reiserfs vfat xfs ntfs3
# Extraction
inst_multiple tar gzip zstd
static int hw_test_source_medium(const char* path) {
int ret = hw_mount(path, SOURCE_MOUNT_PATH, "iso9660", MS_RDONLY);
+ if (ret != 0) {
+ // 2nd try, ntfs for a rufus converted usb key
+ ret = hw_mount(path, SOURCE_MOUNT_PATH, "ntfs3", MS_RDONLY);
+ }
+ if (ret != 0) {
+ // 3rd try, vfat for a rufus converted usb key
+ ret = hw_mount(path, SOURCE_MOUNT_PATH, "vfat", MS_RDONLY);
+ }
+
// If the source could not be mounted we
// cannot proceed.
if (ret != 0)
struct hw_disk** ret = hw_create_disks();
struct hw_disk** disks = ret;
+ // Determine the disk device of source if it is a partition
+ char* sourcedisk = NULL;
+ char syssource[PATH_MAX];
+ (void)snprintf(syssource, sizeof(syssource) - 1, "/sys/class/block/%s", sourcedrive + 5);
+ struct udev_device* s_dev = udev_device_new_from_syspath(hw->udev, syssource);
+ const char* s_devtype = udev_device_get_property_value(s_dev, "DEVTYPE");
+ if (s_devtype && (strcmp(s_devtype, "partition") == 0)) {
+ struct udev_device* p_dev = udev_device_get_parent_with_subsystem_devtype(s_dev,"block","disk");
+ if (p_dev) {
+ sourcedisk = udev_device_get_devnode(p_dev);
+ }
+ }
+ if (!sourcedisk) sourcedisk = sourcedrive;
+
struct udev_enumerate* enumerate = udev_enumerate_new(hw->udev);
udev_enumerate_add_match_subsystem(enumerate, "block");
continue;
}
- // Skip sourcedrive if we need to
- if (sourcedrive && (strcmp(dev_path, sourcedrive) == 0)) {
+ // Skip sourcedisk if we need to
+ if (sourcedisk && (strcmp(dev_path, sourcedisk) == 0)) {
udev_device_unref(dev);
continue;
}
}
// Load common modules
- mysystem(logfile, "/sbin/modprobe vfat"); // USB key
+ mysystem(logfile, "/sbin/modprobe vfat"); // USB key
+ mysystem(logfile, "/sbin/modprobe ntfs3"); // USB key
hw_stop_all_raid_arrays(logfile);
if (!config.unattended) {
assert(sourcedrive);
int r = hw_mount(sourcedrive, SOURCE_MOUNT_PATH, "iso9660", MS_RDONLY);
- if (r) {
+ if (r) r = hw_mount(sourcedrive, SOURCE_MOUNT_PATH, "ntfs3", MS_RDONLY);
+ if (r) r = hw_mount(sourcedrive, SOURCE_MOUNT_PATH, "vfat", MS_RDONLY);
+ if (r)
+ {
snprintf(message, sizeof(message), _("Could not mount %s to %s:\n %s\n"),
sourcedrive, SOURCE_MOUNT_PATH, strerror(errno));
errorbox(message);