summaryrefslogtreecommitdiff
path: root/scripts/package-build/linux-kernel
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/package-build/linux-kernel')
-rw-r--r--scripts/package-build/linux-kernel/.gitignore6
-rw-r--r--scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig150
-rw-r--r--scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig26
-rwxr-xr-xscripts/package-build/linux-kernel/build-intel-ixgbe.sh113
-rwxr-xr-xscripts/package-build/linux-kernel/build-intel-nic.sh (renamed from scripts/package-build/linux-kernel/build-intel-ixgbevf.sh)75
-rwxr-xr-xscripts/package-build/linux-kernel/build-ipt-netflow.sh69
-rwxr-xr-xscripts/package-build/linux-kernel/build-kernel.sh5
-rwxr-xr-xscripts/package-build/linux-kernel/build.py26
-rw-r--r--scripts/package-build/linux-kernel/package.toml22
-rw-r--r--scripts/package-build/linux-kernel/patches/accel-ppp/0002-Radius-Dns-Server-IPv6-Address.patch195
-rw-r--r--scripts/package-build/linux-kernel/patches/ixgbe/0001-ixgbe-always-enable-support-for-unsupported-SFP-modu.patch (renamed from scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch)20
-rw-r--r--scripts/package-build/linux-kernel/patches/ixgbe/0002-BACKPORT-linux-v6.9-PATCH-ixgbe-Add-1000BASE-BX-supp.patch (renamed from scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch)74
-rw-r--r--scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch6
13 files changed, 535 insertions, 252 deletions
diff --git a/scripts/package-build/linux-kernel/.gitignore b/scripts/package-build/linux-kernel/.gitignore
index 0a18ea8c..f1fb5374 100644
--- a/scripts/package-build/linux-kernel/.gitignore
+++ b/scripts/package-build/linux-kernel/.gitignore
@@ -9,6 +9,7 @@
/ovpn-dco
/nat-rtsp*
/jool*
+/ipt-netflow*
/qat*
/QAT*
*.tar.gz
@@ -18,13 +19,12 @@
# Intel Driver source
i40e-*/
igb-*/
-ixgbe-*/
-ixgbevf-*/
+ethernet-linux-*/
vyos-intel-*/
vyos-linux-firmware*/
kernel-vars
r8152-*.tar.bz2
-
+ephemeral.*
*.buildinfo
*.build
*.changes
diff --git a/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig b/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
index 91f26660..e6ea3893 100644
--- a/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
+++ b/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
@@ -234,7 +234,7 @@ CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
-CONFIG_IO_URING=y
+# CONFIG_IO_URING is not set
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KALLSYMS=y
@@ -1735,7 +1735,7 @@ CONFIG_RFKILL_INPUT=y
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
-# CONFIG_PSAMPLE is not set
+CONFIG_PSAMPLE=y
# CONFIG_NET_IFE is not set
CONFIG_LWTUNNEL=y
CONFIG_LWTUNNEL_BPF=y
@@ -1975,7 +1975,7 @@ CONFIG_RASPBERRYPI_FIRMWARE=y
CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
CONFIG_SYSFB=y
-# CONFIG_SYSFB_SIMPLEFB is not set
+CONFIG_SYSFB_SIMPLEFB=y
CONFIG_TI_SCI_PROTOCOL=y
CONFIG_TURRIS_MOX_RWTM=m
# CONFIG_ARM_FFA_TRANSPORT is not set
@@ -3353,7 +3353,8 @@ CONFIG_SERIAL_8250_TEGRA=y
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
-# CONFIG_SERIAL_AMBA_PL011 is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set
# CONFIG_SERIAL_MESON is not set
# CONFIG_SERIAL_TEGRA is not set
@@ -3401,7 +3402,7 @@ CONFIG_TTY_PRINTK=m
CONFIG_TTY_PRINTK_LEVEL=6
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
-CONFIG_VIRTIO_CONSOLE=m
+CONFIG_VIRTIO_CONSOLE=y
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_DMI_DECODE=y
CONFIG_IPMI_PLAT_DATA=y
@@ -4495,8 +4496,141 @@ CONFIG_VIDEO_CMDLINE=y
# CONFIG_AUXDISPLAY is not set
# CONFIG_PANEL is not set
# CONFIG_TEGRA_HOST1X is not set
-# CONFIG_DRM is not set
+CONFIG_DRM=y
+# CONFIG_DRM_DEBUG_MM is not set
+CONFIG_DRM_KMS_HELPER=y
+# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set
# CONFIG_DRM_DEBUG_MODESET_LOCK is not set
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+CONFIG_DRM_TTM=y
+CONFIG_DRM_TTM_HELPER=y
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# end of I2C encoder or helper chips
+
+#
+# ARM devices
+#
+# CONFIG_DRM_HDLCD is not set
+# CONFIG_DRM_MALI_DISPLAY is not set
+# CONFIG_DRM_KOMEDA is not set
+# end of ARM devices
+
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_AMDGPU is not set
+# CONFIG_DRM_NOUVEAU is not set
+# CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_VKMS is not set
+# CONFIG_DRM_ROCKCHIP is not set
+# CONFIG_DRM_VMWGFX is not set
+# CONFIG_DRM_UDL is not set
+# CONFIG_DRM_AST is not set
+# CONFIG_DRM_MGAG200 is not set
+# CONFIG_DRM_RCAR_DU is not set
+# CONFIG_DRM_RZG2L_MIPI_DSI is not set
+# CONFIG_DRM_SHMOBILE is not set
+# CONFIG_DRM_SUN4I is not set
+CONFIG_DRM_QXL=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_DRM_VIRTIO_GPU_KMS=y
+# CONFIG_DRM_MSM is not set
+# CONFIG_DRM_TEGRA is not set
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
+# end of Display Panels
+
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+# CONFIG_DRM_CHIPONE_ICN6211 is not set
+# CONFIG_DRM_CHRONTEL_CH7033 is not set
+# CONFIG_DRM_DISPLAY_CONNECTOR is not set
+# CONFIG_DRM_FSL_LDB is not set
+# CONFIG_DRM_ITE_IT6505 is not set
+# CONFIG_DRM_LONTIUM_LT8912B is not set
+# CONFIG_DRM_LONTIUM_LT9211 is not set
+# CONFIG_DRM_LONTIUM_LT9611 is not set
+# CONFIG_DRM_LONTIUM_LT9611UXC is not set
+# CONFIG_DRM_ITE_IT66121 is not set
+# CONFIG_DRM_LVDS_CODEC is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
+# CONFIG_DRM_NWL_MIPI_DSI is not set
+# CONFIG_DRM_NXP_PTN3460 is not set
+# CONFIG_DRM_PARADE_PS8622 is not set
+# CONFIG_DRM_PARADE_PS8640 is not set
+# CONFIG_DRM_SAMSUNG_DSIM is not set
+# CONFIG_DRM_SIL_SII8620 is not set
+# CONFIG_DRM_SII902X is not set
+# CONFIG_DRM_SII9234 is not set
+# CONFIG_DRM_SIMPLE_BRIDGE is not set
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+# CONFIG_DRM_TOSHIBA_TC358762 is not set
+# CONFIG_DRM_TOSHIBA_TC358764 is not set
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+# CONFIG_DRM_TOSHIBA_TC358768 is not set
+# CONFIG_DRM_TOSHIBA_TC358775 is not set
+# CONFIG_DRM_TI_DLPC3433 is not set
+# CONFIG_DRM_TI_TFP410 is not set
+# CONFIG_DRM_TI_SN65DSI83 is not set
+# CONFIG_DRM_TI_SN65DSI86 is not set
+# CONFIG_DRM_TI_TPD12S015 is not set
+# CONFIG_DRM_ANALOGIX_ANX6345 is not set
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
+# CONFIG_DRM_ANALOGIX_ANX7625 is not set
+# CONFIG_DRM_I2C_ADV7511 is not set
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_CDNS_MHDP8546 is not set
+# CONFIG_DRM_IMX8QM_LDB is not set
+# CONFIG_DRM_IMX8QXP_LDB is not set
+# CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not set
+# CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI is not set
+# end of Display Interface Bridges
+
+# CONFIG_DRM_IMX_DCSS is not set
+# CONFIG_DRM_IMX_LCDC is not set
+# CONFIG_DRM_V3D is not set
+# CONFIG_DRM_LOONGSON is not set
+# CONFIG_DRM_ETNAVIV is not set
+# CONFIG_DRM_HISI_HIBMC is not set
+# CONFIG_DRM_HISI_KIRIN is not set
+# CONFIG_DRM_LOGICVC is not set
+# CONFIG_DRM_MXSFB is not set
+# CONFIG_DRM_IMX_LCDIF is not set
+# CONFIG_DRM_MESON is not set
+# CONFIG_DRM_ARCPGU is not set
+# CONFIG_DRM_BOCHS is not set
+# CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_GM12U320 is not set
+CONFIG_DRM_SIMPLEDRM=y
+# CONFIG_DRM_PL111 is not set
+# CONFIG_DRM_XEN_FRONTEND is not set
+# CONFIG_DRM_LIMA is not set
+# CONFIG_DRM_PANFROST is not set
+# CONFIG_DRM_TIDSS is not set
+# CONFIG_DRM_GUD is not set
+# CONFIG_DRM_SSD130X is not set
+# CONFIG_DRM_HYPERV is not set
+# CONFIG_DRM_LEGACY is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
@@ -5362,7 +5496,9 @@ CONFIG_VIRTIO_MEM=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
-# CONFIG_VDPA is not set
+CONFIG_VIRTIO_VDPA=m
+CONFIG_VDPA=m
+CONFIG_VHOST_VDPA=m
CONFIG_VHOST_IOTLB=m
CONFIG_VHOST_TASK=y
CONFIG_VHOST=m
diff --git a/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig b/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
index a77a6a13..de3b84aa 100644
--- a/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
+++ b/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 6.6.69 Kernel Configuration
+# Linux/x86 6.6.89 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Debian 12.2.0-14) 12.2.0"
CONFIG_CC_IS_GCC=y
@@ -19,7 +19,7 @@ CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_TOOLS_SUPPORT_RELR=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
-CONFIG_PAHOLE_VERSION=0
+CONFIG_PAHOLE_VERSION=124
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
@@ -257,7 +257,7 @@ CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
-CONFIG_IO_URING=y
+# CONFIG_IO_URING is not set
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KALLSYMS=y
@@ -1780,7 +1780,7 @@ CONFIG_RFKILL_INPUT=y
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
-# CONFIG_PSAMPLE is not set
+CONFIG_PSAMPLE=y
# CONFIG_NET_IFE is not set
CONFIG_LWTUNNEL=y
CONFIG_LWTUNNEL_BPF=y
@@ -1798,8 +1798,6 @@ CONFIG_ETHTOOL_NETLINK=y
#
# Device Drivers
#
-CONFIG_HAVE_EISA=y
-# CONFIG_EISA is not set
CONFIG_HAVE_PCI=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
@@ -4418,6 +4416,7 @@ CONFIG_HID_GENERIC=m
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_UDRAW_PS3 is not set
# CONFIG_HID_U2FZERO is not set
+# CONFIG_HID_UNIVERSAL_PIDFF is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_WIIMOTE is not set
# CONFIG_HID_XINMO is not set
@@ -5023,18 +5022,27 @@ CONFIG_VIRTIO_PCI_LIB_LEGACY=m
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_VDPA=m
# CONFIG_VIRTIO_PMEM is not set
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
-# CONFIG_VDPA is not set
+CONFIG_VDPA=m
+# CONFIG_VDPA_USER is not set
+# CONFIG_IFCVF is not set
+# CONFIG_MLX5_VDPA_NET is not set
+# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
+# CONFIG_VP_VDPA is not set
+# CONFIG_ALIBABA_ENI_VDPA is not set
+# CONFIG_SNET_VDPA is not set
CONFIG_VHOST_IOTLB=m
CONFIG_VHOST_TASK=y
CONFIG_VHOST=m
CONFIG_VHOST_MENU=y
CONFIG_VHOST_NET=m
CONFIG_VHOST_VSOCK=m
+CONFIG_VHOST_VDPA=m
# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
#
@@ -5412,7 +5420,6 @@ CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
-CONFIG_INOTIFY_STACKFS=y
# CONFIG_FANOTIFY is not set
# CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=m
@@ -5479,9 +5486,9 @@ CONFIG_TMPFS_XATTR=y
# CONFIG_TMPFS_INODE64 is not set
# CONFIG_TMPFS_QUOTA is not set
CONFIG_HUGETLBFS=y
+# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
CONFIG_HUGETLB_PAGE=y
CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
-# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
CONFIG_CONFIGFS_FS=m
CONFIG_EFIVAR_FS=m
@@ -5586,7 +5593,6 @@ CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_UTF8=m
# CONFIG_DLM is not set
# CONFIG_UNICODE is not set
-CONFIG_IO_WQ=y
# end of File systems
#
diff --git a/scripts/package-build/linux-kernel/build-intel-ixgbe.sh b/scripts/package-build/linux-kernel/build-intel-ixgbe.sh
deleted file mode 100755
index fabfb7af..00000000
--- a/scripts/package-build/linux-kernel/build-intel-ixgbe.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/sh
-CWD=$(pwd)
-KERNEL_VAR_FILE=${CWD}/kernel-vars
-
-if ! dpkg-architecture -iamd64; then
- echo "Intel ixgbe is only buildable on amd64 platforms"
- exit 0
-fi
-
-if [ ! -f ${KERNEL_VAR_FILE} ]; then
- echo "Kernel variable file '${KERNEL_VAR_FILE}' does not exist, run ./build_kernel.sh first"
- exit 1
-fi
-
-. ${KERNEL_VAR_FILE}
-
-url="https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.20.3/ixgbe-5.20.3.tar.gz"
-
-cd ${CWD}
-
-DRIVER_FILE=$(basename ${url} | sed -e s/tar_0/tar/)
-DRIVER_DIR="${DRIVER_FILE%.tar.gz}"
-DRIVER_NAME="ixgbe"
-DRIVER_VERSION=$(echo ${DRIVER_DIR} | awk -F${DRIVER_NAME} '{print $2}' | sed 's/^-//')
-DRIVER_VERSION_EXTRA=""
-
-# Build up Debian related variables required for packaging
-DEBIAN_ARCH=$(dpkg --print-architecture)
-DEBIAN_DIR="${CWD}/vyos-intel-${DRIVER_NAME}_${DRIVER_VERSION}_${DEBIAN_ARCH}"
-DEBIAN_CONTROL="${DEBIAN_DIR}/DEBIAN/control"
-DEBIAN_POSTINST="${CWD}/vyos-intel-ixgbe.postinst"
-
-# Fetch Intel driver source from SourceForge
-if [ -e ${DRIVER_FILE} ]; then
- rm -f ${DRIVER_FILE}
-fi
-curl -L -o ${DRIVER_FILE} ${url}
-if [ "$?" -ne "0" ]; then
- exit 1
-fi
-
-# Unpack archive
-if [ -d ${DRIVER_DIR} ]; then
- rm -rf ${DRIVER_DIR}
-fi
-mkdir -p ${DRIVER_DIR}
-tar -C ${DRIVER_DIR} --strip-components=1 -xf ${DRIVER_FILE}
-
-cd ${DRIVER_DIR}/src
-if [ -z $KERNEL_DIR ]; then
- echo "KERNEL_DIR not defined"
- exit 1
-fi
-
-# See https://lore.kernel.org/lkml/f90837d0-810e-5772-7841-28d47c44d260@intel.com/
-echo "I: remove pci_enable_pcie_error_reporting() code no longer present in Kernel"
-sed -i '/.*pci_disable_pcie_error_reporting(pdev);/d' ixgbe_main.c
-sed -i '/.*pci_enable_pcie_error_reporting(pdev);/d' ixgbe_main.c
-
-# See https://vyos.dev/T6155
-echo "I: always enable allow_unsupported_sfp for all NICs by default"
-patch -l -p1 < ../../patches/ixgbe/allow_unsupported_sfp.patch
-
-# See https://vyos.dev/T6162
-echo "I: add 1000BASE-BX support"
-patch -l -p1 < ../../patches/ixgbe/add_1000base-bx_support.patch
-
-echo "I: Compile Kernel module for Intel ${DRIVER_NAME} driver"
-make KSRC=${KERNEL_DIR} INSTALL_MOD_PATH=${DEBIAN_DIR} INSTALL_FW_PATH=${DEBIAN_DIR} -j $(getconf _NPROCESSORS_ONLN) install
-
-if [ "x$?" != "x0" ]; then
- exit 1
-fi
-
-if [ -f ${DEBIAN_DIR}.deb ]; then
- rm ${DEBIAN_DIR}.deb
-fi
-
-# build Debian package
-echo "I: Building Debian package vyos-intel-${DRIVER_NAME}"
-cd ${CWD}
-
-# Sign generated Kernel modules
-${CWD}/sign-modules.sh ${DEBIAN_DIR}
-
-# delete non required files which are also present in the kernel package
-# und thus lead to duplicated files
-find ${DEBIAN_DIR} -name "modules.*" | xargs rm -f
-
-echo "#!/bin/sh" > ${DEBIAN_POSTINST}
-echo "/sbin/depmod -a ${KERNEL_VERSION}${KERNEL_SUFFIX}" >> ${DEBIAN_POSTINST}
-
-fpm --input-type dir --output-type deb --name vyos-intel-${DRIVER_NAME} \
- --version ${DRIVER_VERSION} --deb-compression gz \
- --maintainer "VyOS Package Maintainers <maintainers@vyos.net>" \
- --description "Vendor based driver for Intel ${DRIVER_NAME}" \
- --depends linux-image-${KERNEL_VERSION}${KERNEL_SUFFIX} \
- --license "GPL2" -C ${DEBIAN_DIR} --after-install ${DEBIAN_POSTINST}
-
-# echo "I: Cleanup ${DRIVER_NAME} source"
-# cd ${CWD}
-# if [ -e ${DRIVER_FILE} ]; then
-# rm -f ${DRIVER_FILE}
-# fi
-# if [ -d ${DRIVER_DIR} ]; then
-# rm -rf ${DRIVER_DIR}
-# fi
-# if [ -d ${DEBIAN_DIR} ]; then
-# rm -rf ${DEBIAN_DIR}
-# fi
-# if [ -f ${DEBIAN_POSTINST} ]; then
-# rm -f ${DEBIAN_POSTINST}
-# fi
diff --git a/scripts/package-build/linux-kernel/build-intel-ixgbevf.sh b/scripts/package-build/linux-kernel/build-intel-nic.sh
index f0e4c89b..3e8bbb37 100755
--- a/scripts/package-build/linux-kernel/build-intel-ixgbevf.sh
+++ b/scripts/package-build/linux-kernel/build-intel-nic.sh
@@ -3,7 +3,7 @@ CWD=$(pwd)
KERNEL_VAR_FILE=${CWD}/kernel-vars
if ! dpkg-architecture -iamd64; then
- echo "Intel ixgbevf is only buildable on amd64 platforms"
+ echo "Intel drivers only buildable on amd64 platforms"
exit 0
fi
@@ -14,51 +14,39 @@ fi
. ${KERNEL_VAR_FILE}
-url="https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/4.18.9/ixgbevf-4.18.9.tar.gz"
+if [ -z $KERNEL_DIR ]; then
+ echo "KERNEL_DIR not defined"
+ exit 1
+fi
-cd ${CWD}
+DRIVER_NAME=$1
+cd ${CWD}/ethernet-linux-${DRIVER_NAME}
+if [ -d .git ]; then
+ git clean --force -d -x
+ git reset --hard origin/main
+fi
-DRIVER_FILE=$(basename ${url} | sed -e s/tar_0/tar/)
-DRIVER_DIR="${DRIVER_FILE%.tar.gz}"
-DRIVER_NAME="ixgbevf"
-DRIVER_VERSION=$(echo ${DRIVER_DIR} | awk -F${DRIVER_NAME} '{print $2}' | sed 's/^-//')
-DRIVER_VERSION_EXTRA=""
+DRIVER_VERSION=$(git describe | sed s/^v//)
# Build up Debian related variables required for packaging
DEBIAN_ARCH=$(dpkg --print-architecture)
DEBIAN_DIR="${CWD}/vyos-intel-${DRIVER_NAME}_${DRIVER_VERSION}_${DEBIAN_ARCH}"
DEBIAN_CONTROL="${DEBIAN_DIR}/DEBIAN/control"
-DEBIAN_POSTINST="${CWD}/vyos-intel-ixgbevf.postinst"
-
-# Fetch Intel driver source from SourceForge
-if [ -e ${DRIVER_FILE} ]; then
- rm -f ${DRIVER_FILE}
-fi
-curl -L -o ${DRIVER_FILE} ${url}
-if [ "$?" -ne "0" ]; then
- exit 1
+DEBIAN_POSTINST="${CWD}/vyos-intel-${DRIVER_NAME}.postinst"
+
+# See https://vyos.dev/T6155
+# See https://vyos.dev/T6162
+PATCH_DIR=${CWD}/patches/${DRIVER_NAME}
+if [ -d $PATCH_DIR ]; then
+ for patch in $(ls ${PATCH_DIR})
+ do
+ echo "I: Apply patch: ${PATCH_DIR}/${patch}"
+ patch -p1 < ${PATCH_DIR}/${patch}
+ done
fi
-# Unpack archive
-if [ -d ${DRIVER_DIR} ]; then
- rm -rf ${DRIVER_DIR}
-fi
-mkdir -p ${DRIVER_DIR}
-tar -C ${DRIVER_DIR} --strip-components=1 -xf ${DRIVER_FILE}
-
-cd ${DRIVER_DIR}/src
-if [ -z $KERNEL_DIR ]; then
- echo "KERNEL_DIR not defined"
- exit 1
-fi
-
-# See https://lore.kernel.org/lkml/f90837d0-810e-5772-7841-28d47c44d260@intel.com/
-echo "I: remove pci_enable_pcie_error_reporting() code no longer present in Kernel"
-sed -i '/.*pci_disable_pcie_error_reporting(pdev);/d' ixgbevf_main.c
-sed -i '/.*pci_enable_pcie_error_reporting(pdev);/d' ixgbevf_main.c
-
echo "I: Compile Kernel module for Intel ${DRIVER_NAME} driver"
-make KSRC=${KERNEL_DIR} INSTALL_MOD_PATH=${DEBIAN_DIR} INSTALL_FW_PATH=${DEBIAN_DIR} -j $(getconf _NPROCESSORS_ONLN) install
+make KSRC=${KERNEL_DIR} INSTALL_MOD_PATH=${DEBIAN_DIR} INSTALL_FW_PATH=${DEBIAN_DIR} -j $(getconf _NPROCESSORS_ONLN) -C src install
if [ "x$?" != "x0" ]; then
exit 1
@@ -88,18 +76,3 @@ fpm --input-type dir --output-type deb --name vyos-intel-${DRIVER_NAME} \
--description "Vendor based driver for Intel ${DRIVER_NAME}" \
--depends linux-image-${KERNEL_VERSION}${KERNEL_SUFFIX} \
--license "GPL2" -C ${DEBIAN_DIR} --after-install ${DEBIAN_POSTINST}
-
-# echo "I: Cleanup ${DRIVER_NAME} source"
-# cd ${CWD}
-# if [ -e ${DRIVER_FILE} ]; then
-# rm -f ${DRIVER_FILE}
-# fi
-# if [ -d ${DRIVER_DIR} ]; then
-# rm -rf ${DRIVER_DIR}
-# fi
-# if [ -d ${DEBIAN_DIR} ]; then
-# rm -rf ${DEBIAN_DIR}
-# fi
-# if [ -f ${DEBIAN_POSTINST} ]; then
-# rm -f ${DEBIAN_POSTINST}
-# fi
diff --git a/scripts/package-build/linux-kernel/build-ipt-netflow.sh b/scripts/package-build/linux-kernel/build-ipt-netflow.sh
new file mode 100755
index 00000000..9245a416
--- /dev/null
+++ b/scripts/package-build/linux-kernel/build-ipt-netflow.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+CWD=$(pwd)
+KERNEL_VAR_FILE=${CWD}/kernel-vars
+
+IPT_NETFLOW_SRC=${CWD}/ipt-netflow
+if [ ! -d ${IPT_NETFLOW_SRC} ]; then
+ echo "ipt_NETFLOW source not found"
+ exit 1
+fi
+
+if [ ! -f ${KERNEL_VAR_FILE} ]; then
+ echo "Kernel variable file '${KERNEL_VAR_FILE}' does not exist, run ./build_kernel.sh first"
+ exit 1
+fi
+
+cd ${IPT_NETFLOW_SRC}
+if [ -d .git ]; then
+ git reset --hard HEAD
+ git clean --force -d -x
+fi
+
+. ${KERNEL_VAR_FILE}
+
+DRIVER_VERSION=$(git describe | sed s/^v//)
+
+# Build up Debian related variables required for packaging
+DEBIAN_ARCH=$(dpkg --print-architecture)
+DEBIAN_DIR="tmp/"
+DEBIAN_CONTROL="${DEBIAN_DIR}/DEBIAN/control"
+DEBIAN_POSTINST="${CWD}/vyos-ipt-netflow.postinst"
+
+./configure --enable-aggregation --kdir=${KERNEL_DIR}
+make all
+
+if [ "x$?" != "x0" ]; then
+ exit 1
+fi
+
+if [ -f ${DEBIAN_DIR}.deb ]; then
+ rm ${DEBIAN_DIR}.deb
+fi
+
+if [ ! -d ${DEBIAN_DIR} ]; then
+ mkdir -p ${DEBIAN_DIR}
+fi
+
+# build Debian package
+echo "I: Building Debian package vyos-ipt-netflow"
+cp ipt_NETFLOW.ko ${DEBIAN_DIR}
+cp libipt_NETFLOW.so ${DEBIAN_DIR}
+cp libip6t_NETFLOW.so ${DEBIAN_DIR}
+
+# Sign generated Kernel modules
+${CWD}/sign-modules.sh ${DEBIAN_DIR}
+
+echo "#!/bin/sh" > ${DEBIAN_POSTINST}
+echo "/sbin/depmod -a ${KERNEL_VERSION}${KERNEL_SUFFIX}" >> ${DEBIAN_POSTINST}
+
+cd ${CWD}
+
+fpm --input-type dir --output-type deb --name vyos-ipt-netflow \
+ --version ${DRIVER_VERSION} --deb-compression gz \
+ --maintainer "VyOS Package Maintainers <maintainers@vyos.net>" \
+ --description "ipt_NETFLOW module" \
+ --depends linux-image-${KERNEL_VERSION}${KERNEL_SUFFIX} \
+ --license "GPL2" -C ${IPT_NETFLOW_SRC}/tmp --after-install ${DEBIAN_POSTINST} \
+ ipt_NETFLOW.ko=/lib/modules/${KERNEL_VERSION}${KERNEL_SUFFIX}/extra/ipt_NETFLOW.ko \
+ libipt_NETFLOW.so=/lib/$(uname -m)-linux-gnu/xtables/libipt_NETFLOW.so \
+ libip6t_NETFLOW.so=/lib/$(uname -m)-linux-gnu/xtables/libip6t_NETFLOW.so
diff --git a/scripts/package-build/linux-kernel/build-kernel.sh b/scripts/package-build/linux-kernel/build-kernel.sh
index cd9c1054..62dd7829 100755
--- a/scripts/package-build/linux-kernel/build-kernel.sh
+++ b/scripts/package-build/linux-kernel/build-kernel.sh
@@ -36,12 +36,13 @@ do
done
# Change name of Signing Cert
-sed -i -e "s/CN =.*/CN=VyOS build time autogenerated kernel key/" certs/default_x509.genkey
+sed -i -e "s/CN =.*/CN=VyOS Networks build time autogenerated Kernel key/" certs/default_x509.genkey
TRUSTED_KEYS_FILE=trusted_keys.pem
# start with empty key file
echo -n "" > $TRUSTED_KEYS_FILE
-CERTS=$(find ../../../data/live-build-config/includes.chroot/var/lib/shim-signed/mok -name "*.pem" -type f || true)
+GIT_ROOT=$(git rev-parse --show-toplevel)
+CERTS=$(find ${GIT_ROOT}/data/certificates -name "*.pem" -type f || true)
if [ ! -z "${CERTS}" ]; then
# add known public keys to Kernel certificate chain
for file in $CERTS; do
diff --git a/scripts/package-build/linux-kernel/build.py b/scripts/package-build/linux-kernel/build.py
index 1433eaa8..af610079 100755
--- a/scripts/package-build/linux-kernel/build.py
+++ b/scripts/package-build/linux-kernel/build.py
@@ -131,16 +131,20 @@ def build_package(package: dict, dependencies: list) -> None:
create_tarball(f'{package["name"]}-{package["commit_id"]}', f'{package["name"]}')
elif package['build_cmd'] == 'build_intel_qat':
build_intel_qat()
+ elif package['build_cmd'] == 'build_intel_igb':
+ build_intel(package['name'], package['commit_id'], package['scm_url'])
elif package['build_cmd'] == 'build_intel_ixgbe':
- build_intel_ixgbe()
+ build_intel(package['name'], package['commit_id'], package['scm_url'])
elif package['build_cmd'] == 'build_intel_ixgbevf':
- build_intel_ixgbevf()
+ build_intel(package['name'], package['commit_id'], package['scm_url'])
elif package['build_cmd'] == 'build_mellanox_ofed':
build_mellanox_ofed()
elif package['build_cmd'] == 'build_realtek_r8152':
build_realtek_r8152()
elif package['build_cmd'] == 'build_jool':
build_jool()
+ elif package['build_cmd'] == 'build_ipt_netflow':
+ build_ipt_netflow(package['commit_id'], package['scm_url'])
elif package['build_cmd'] == 'build_openvpn_dco':
build_openvpn_dco(package['commit_id'], package['scm_url'])
create_tarball(f'{package["name"]}-{package["commit_id"]}', f'{package["name"]}')
@@ -215,14 +219,11 @@ def build_intel_qat():
run(['./build-intel-qat.sh'], check=True)
-def build_intel_ixgbe():
- """Build Intel IXGBE"""
- run(['./build-intel-ixgbe.sh'], check=True)
-
-
-def build_intel_ixgbevf():
- """Build Intel IXGBEVF"""
- run(['./build-intel-ixgbevf.sh'], check=True)
+def build_intel(driver_name: str, commit_id: str, scm_url: str):
+ """Build Intel driver from Git repository"""
+ repo_dir = Path(f'ethernet-linux-{driver_name}')
+ clone_or_update_repo(repo_dir, scm_url, commit_id)
+ run(['./build-intel-nic.sh', driver_name], check=True)
def build_mellanox_ofed():
@@ -239,6 +240,11 @@ def build_jool():
"""Build Jool"""
run(['echo y | ./build-jool.py'], check=True, shell=True)
+def build_ipt_netflow(commit_id, scm_url):
+ """Build ipt_NETFLOW"""
+ repo_dir = Path('ipt-netflow')
+ clone_or_update_repo(repo_dir, scm_url, commit_id)
+ run(['./build-ipt-netflow.sh'], check=True, shell=True)
def build_openvpn_dco(commit_id, scm_url):
"""Build OpenVPN DCO"""
diff --git a/scripts/package-build/linux-kernel/package.toml b/scripts/package-build/linux-kernel/package.toml
index 035a442e..0bbd6785 100644
--- a/scripts/package-build/linux-kernel/package.toml
+++ b/scripts/package-build/linux-kernel/package.toml
@@ -22,7 +22,6 @@ commit_id = "1.13.0"
scm_url = "https://github.com/accel-ppp/accel-ppp.git"
build_cmd = "build_accel_ppp"
-
[[packages]]
name = "ovpn-dco"
commit_id = "v0.2.20231117"
@@ -35,7 +34,6 @@ commit_id = "475af0a"
scm_url = "https://github.com/maru-sama/rtsp-linux.git"
build_cmd = "build_nat_rtsp"
-
[[packages]]
name = "qat"
commit_id = ""
@@ -43,15 +41,21 @@ scm_url = ""
build_cmd = "build_intel_qat"
[[packages]]
+name = "igb"
+commit_id = "v5.18.7"
+scm_url = "https://github.com/intel/ethernet-linux-igb"
+build_cmd = "build_intel_igb"
+
+[[packages]]
name = "ixgbe"
-commit_id = ""
-scm_url = ""
+commit_id = "v6.0.5"
+scm_url = "https://github.com/intel/ethernet-linux-ixgbe"
build_cmd = "build_intel_ixgbe"
[[packages]]
name = "ixgbevf"
-commit_id = ""
-scm_url = ""
+commit_id = "v5.0.2"
+scm_url = "http://github.com/intel/ethernet-linux-ixgbevf"
build_cmd = "build_intel_ixgbevf"
[[packages]]
@@ -71,3 +75,9 @@ name = "realtek-r8152"
commit_id = ""
scm_url = ""
build_cmd = "build_realtek_r8152"
+
+[[packages]]
+name = "ipt-netflow"
+commit_id = "0eb2092e93"
+scm_url = "https://github.com/aabc/ipt-netflow"
+build_cmd = "build_ipt_netflow"
diff --git a/scripts/package-build/linux-kernel/patches/accel-ppp/0002-Radius-Dns-Server-IPv6-Address.patch b/scripts/package-build/linux-kernel/patches/accel-ppp/0002-Radius-Dns-Server-IPv6-Address.patch
new file mode 100644
index 00000000..a8991801
--- /dev/null
+++ b/scripts/package-build/linux-kernel/patches/accel-ppp/0002-Radius-Dns-Server-IPv6-Address.patch
@@ -0,0 +1,195 @@
+From: Ben Hardill <ben@hardill.me.uk>
+Date: Tue, 13 Mar 2025 05:00:00 +0000
+Subject: [PATCH] PPPoE: IPv6 DNS from Radius - managing the DNS-Server-IPv6-Address attribute
+
+Patch authored by Ben Hardill from
+https://github.com/accel-ppp/accel-ppp/pull/69
+---
+diff --git a/accel-pppd/include/ap_session.h b/accel-pppd/include/ap_session.h
+index 70515133..507eae04 100644
+--- a/accel-pppd/include/ap_session.h
++++ b/accel-pppd/include/ap_session.h
+@@ -84,6 +84,7 @@ struct ap_session
+ struct ipv4db_item_t *ipv4;
+ struct ipv6db_item_t *ipv6;
+ struct ipv6db_prefix_t *ipv6_dp;
++ struct ipv6db_item_t *ipv6_dns;
+ char *ipv4_pool_name;
+ char *ipv6_pool_name;
+ char *dpv6_pool_name;
+diff --git a/accel-pppd/ipv6/dhcpv6.c b/accel-pppd/ipv6/dhcpv6.c
+index 158771b1..1ef48132 100644
+--- a/accel-pppd/ipv6/dhcpv6.c
++++ b/accel-pppd/ipv6/dhcpv6.c
+@@ -214,19 +214,41 @@ static void insert_status(struct dhcpv6_packet *pkt, struct dhcpv6_option *opt,
+ status->code = htons(code);
+ }
+
+-static void insert_oro(struct dhcpv6_packet *reply, struct dhcpv6_option *opt)
++static void insert_oro(struct dhcpv6_packet *reply, struct dhcpv6_option *opt, struct ap_session *ses)
+ {
+ struct dhcpv6_option *opt1;
+- int i, j;
++ int i = 0, j = 0, k = 0;
+ uint16_t *ptr;
+ struct in6_addr addr, *addr_ptr;
++ struct ipv6db_addr_t *dns;
+
+ for (i = ntohs(opt->hdr->len) / 2, ptr = (uint16_t *)opt->hdr->data; i; i--, ptr++) {
+ if (ntohs(*ptr) == D6_OPTION_DNS_SERVERS) {
+- if (conf_dns_count) {
+- opt1 = dhcpv6_option_alloc(reply, D6_OPTION_DNS_SERVERS, conf_dns_count * sizeof(addr));
+- for (j = 0, addr_ptr = (struct in6_addr *)opt1->hdr->data; j < conf_dns_count; j++, addr_ptr++)
+- memcpy(addr_ptr, conf_dns + j, sizeof(addr));
++ if (ses->ipv6_dns && !list_empty(&ses->ipv6_dns->addr_list)) {
++ list_for_each_entry(dns, &ses->ipv6_dns->addr_list, entry) {
++ j++;
++ }
++ if (j >= 3) {
++ j = 3;
++ }
++ opt1 = dhcpv6_option_alloc(reply, D6_OPTION_DNS_SERVERS, j * sizeof(addr));
++ addr_ptr = (struct in6_addr *)opt1->hdr->data;
++ list_for_each_entry(dns, &ses->ipv6_dns->addr_list, entry) {
++ if (k < j) {
++ memcpy(addr_ptr, &dns->addr, sizeof(addr));
++ k++;
++ addr_ptr++;
++ } else {
++ break;
++ }
++ }
++
++ } else {
++ if (conf_dns_count) {
++ opt1 = dhcpv6_option_alloc(reply, D6_OPTION_DNS_SERVERS, conf_dns_count * sizeof(addr));
++ for (j = 0, addr_ptr = (struct in6_addr *)opt1->hdr->data; j < conf_dns_count; j++, addr_ptr++)
++ memcpy(addr_ptr, conf_dns + j, sizeof(addr));
++ }
+ }
+ } else if (ntohs(*ptr) == D6_OPTION_DOMAIN_LIST) {
+ if (conf_dnssl_size) {
+@@ -434,7 +456,10 @@ static void dhcpv6_send_reply(struct dhcpv6_packet *req, struct dhcpv6_pd *pd, i
+
+ // Option Request
+ } else if (ntohs(opt->hdr->code) == D6_OPTION_ORO) {
+- insert_oro(reply, opt);
++ if (ses->ipv6_dns &&!list_empty(&ses->ipv6_dns->addr_list)) {
++ log_ppp_info2("User specific IPv6 DNS entries\n");
++ }
++ insert_oro(reply, opt, ses);
+
+ } else if (ntohs(opt->hdr->code) == D6_OPTION_RAPID_COMMIT) {
+ if (req->hdr->type == D6_SOLICIT)
+@@ -594,7 +619,7 @@ static void dhcpv6_send_reply2(struct dhcpv6_packet *req, struct dhcpv6_pd *pd,
+ }
+ // Option Request
+ } else if (ntohs(opt->hdr->code) == D6_OPTION_ORO)
+- insert_oro(reply, opt);
++ insert_oro(reply, opt, ses);
+ }
+
+ opt1 = dhcpv6_option_alloc(reply, D6_OPTION_PREFERENCE, 1);
+diff --git a/accel-pppd/ipv6/nd.c b/accel-pppd/ipv6/nd.c
+index 297e4d63..b3054274 100644
+--- a/accel-pppd/ipv6/nd.c
++++ b/accel-pppd/ipv6/nd.c
+@@ -174,7 +174,32 @@ static void ipv6_nd_send_ra(struct ipv6_nd_handler_t *h, struct sockaddr_in6 *ds
+ rinfo++;
+ }*/
+
+- if (conf_dns_count) {
++ if (ses->ipv6_dns && !list_empty(&ses->ipv6_dns->addr_list)) {
++ int i = 0, j = 0;
++ struct ipv6db_addr_t *dns;
++
++ list_for_each_entry(dns, &ses->ipv6_dns->addr_list, entry) {
++ i++;
++ }
++ if (i >= 3) {
++ i = 3;
++ }
++ rdnssinfo = (struct nd_opt_rdnss_info_local *)pinfo;
++ memset(rdnssinfo, 0, sizeof(*rdnssinfo));
++ rdnssinfo->nd_opt_rdnssi_type = ND_OPT_RDNSS_INFORMATION;
++ rdnssinfo->nd_opt_rdnssi_len = 1 + 2 * i;
++ rdnssinfo->nd_opt_rdnssi_lifetime = htonl(conf_rdnss_lifetime);
++ rdnss_addr = (struct in6_addr *)rdnssinfo->nd_opt_rdnssi;
++ list_for_each_entry(dns, &ses->ipv6_dns->addr_list, entry) {
++ if (j < i) {
++ memcpy(rdnss_addr, &dns->addr, sizeof(*rdnss_addr));
++ j++;
++ rdnss_addr++;
++ } else {
++ break;
++ }
++ }
++ } else if (conf_dns_count) {
+ rdnssinfo = (struct nd_opt_rdnss_info_local *)pinfo;
+ memset(rdnssinfo, 0, sizeof(*rdnssinfo));
+ rdnssinfo->nd_opt_rdnssi_type = ND_OPT_RDNSS_INFORMATION;
+diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c
+index 786faa56..1379b0b2 100644
+--- a/accel-pppd/radius/radius.c
++++ b/accel-pppd/radius/radius.c
+@@ -403,6 +403,12 @@ int rad_proc_attrs(struct rad_req_t *req)
+ case Framed_IPv6_Route:
+ rad_add_framed_ipv6_route(attr->val.string, rpd);
+ break;
++ case DNS_Server_IPv6_Address:
++ a = _malloc(sizeof(*a));
++ memset(a, 0, sizeof(*a));
++ a->addr = attr->val.ipv6addr;
++ list_add_tail(&a->entry, &rpd->ipv6_dns.addr_list);
++ break;
+ }
+ }
+
+@@ -420,6 +426,9 @@ int rad_proc_attrs(struct rad_req_t *req)
+ if (!rpd->ses->ipv6_dp && !list_empty(&rpd->ipv6_dp.prefix_list))
+ rpd->ses->ipv6_dp = &rpd->ipv6_dp;
+
++ if (!rpd->ses->ipv6_dns && !list_empty(&rpd->ipv6_dns.addr_list))
++ rpd->ses->ipv6_dns = &rpd->ipv6_dns;
++
+ return res;
+ }
+
+@@ -584,10 +593,12 @@ static void ses_starting(struct ap_session *ses)
+ INIT_LIST_HEAD(&rpd->plugin_list);
+ INIT_LIST_HEAD(&rpd->ipv6_addr.addr_list);
+ INIT_LIST_HEAD(&rpd->ipv6_dp.prefix_list);
++ INIT_LIST_HEAD(&rpd->ipv6_dns.addr_list);
+
+ rpd->ipv4_addr.owner = &ipdb;
+ rpd->ipv6_addr.owner = &ipdb;
+ rpd->ipv6_dp.owner = &ipdb;
++ rpd->ipv6_dns.owner = &ipdb;
+
+ list_add_tail(&rpd->pd.entry, &ses->pd_list);
+
+@@ -764,6 +775,12 @@ static void ses_finished(struct ap_session *ses)
+ _free(a);
+ }
+
++ while (!list_empty(&rpd->ipv6_dns.addr_list)) {
++ a = list_entry(rpd->ipv6_dns.addr_list.next, typeof(*a), entry);
++ list_del(&a->entry);
++ _free(a);
++ }
++
+ fr6 = rpd->fr6;
+ while (fr6) {
+ struct framed_ip6_route *next = fr6->next;
+diff --git a/accel-pppd/radius/radius_p.h b/accel-pppd/radius/radius_p.h
+index 988f154f..eaa5acb0 100644
+--- a/accel-pppd/radius/radius_p.h
++++ b/accel-pppd/radius/radius_p.h
+@@ -65,6 +65,7 @@ struct radius_pd_t {
+ struct ipv4db_item_t ipv4_addr;
+ struct ipv6db_item_t ipv6_addr;
+ struct ipv6db_prefix_t ipv6_dp;
++ struct ipv6db_item_t ipv6_dns;
+ int acct_interim_interval;
+ int acct_interim_jitter;
+
diff --git a/scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch b/scripts/package-build/linux-kernel/patches/ixgbe/0001-ixgbe-always-enable-support-for-unsupported-SFP-modu.patch
index 647fe4d5..3f2cbb4f 100644
--- a/scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch
+++ b/scripts/package-build/linux-kernel/patches/ixgbe/0001-ixgbe-always-enable-support-for-unsupported-SFP-modu.patch
@@ -1,16 +1,16 @@
-From 4f6c1dc3c48a1b2fa7c06206e6366bcfaa33f3f7 Mon Sep 17 00:00:00 2001
+From a3ebb453f4a8c95fe3674d09646edb93946d450a Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
-Date: Fri, 22 Mar 2024 11:33:27 +0000
+Date: Sat, 15 Feb 2025 09:17:10 +0100
Subject: [PATCH] ixgbe: always enable support for unsupported SFP+ modules
---
- ixgbe_param.c | 10 +++++++---
+ src/ixgbe_param.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
-diff --git a/ixgbe_param.c b/ixgbe_param.c
-index 71197b7..dac33ca 100644
---- a/ixgbe_param.c
-+++ b/ixgbe_param.c
+diff --git a/src/ixgbe_param.c b/src/ixgbe_param.c
+index bba03ae..3f29492 100644
+--- a/src/ixgbe_param.c
++++ b/src/ixgbe_param.c
@@ -307,7 +307,7 @@ IXGBE_PARAM(LRO, "Large Receive Offload (0,1), default 0 = off");
* Default Value: 0
*/
@@ -20,7 +20,7 @@ index 71197b7..dac33ca 100644
/* Enable/disable support for DMA coalescing
*
-@@ -1133,8 +1133,8 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter)
+@@ -1135,8 +1135,8 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter)
struct ixgbe_option opt = {
.type = enable_option,
.name = "allow_unsupported_sfp",
@@ -31,7 +31,7 @@ index 71197b7..dac33ca 100644
};
#ifdef module_param_array
if (num_allow_unsupported_sfp > bd) {
-@@ -1150,7 +1150,11 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter)
+@@ -1152,7 +1152,11 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter)
}
#ifdef module_param_array
} else {
@@ -44,5 +44,5 @@ index 71197b7..dac33ca 100644
#endif
}
--
-2.39.2
+2.39.5
diff --git a/scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch b/scripts/package-build/linux-kernel/patches/ixgbe/0002-BACKPORT-linux-v6.9-PATCH-ixgbe-Add-1000BASE-BX-supp.patch
index 6c536c38..924c248b 100644
--- a/scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch
+++ b/scripts/package-build/linux-kernel/patches/ixgbe/0002-BACKPORT-linux-v6.9-PATCH-ixgbe-Add-1000BASE-BX-supp.patch
@@ -1,7 +1,7 @@
-From 02491fc5cb9bfd0905cfa481d3a6156167fa1720 Mon Sep 17 00:00:00 2001
-From: Ernesto Castellotti <ernesto@castellotti.net>
-Date: Sat, 23 Mar 2024 12:57:56 +0100
-Subject: [BACKPORT linux v6.9] [PATCH] ixgbe: Add 1000BASE-BX support
+From 0ef6088d0d93fcda7adee59fe675f96bcae36c13 Mon Sep 17 00:00:00 2001
+From: Christian Breunig <christian@breunig.cc>
+Date: Sat, 15 Feb 2025 09:17:35 +0100
+Subject: [PATCH] [BACKPORT linux v6.9] [PATCH] ixgbe: Add 1000BASE-BX support
Added support for 1000BASE-BX, i.e. Gigabit Ethernet over single strand
of single-mode fiber.
@@ -94,17 +94,17 @@ Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20240301184806.2634508-3-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
- ixgbe_82599.c | 4 +++-
- ixgbe_ethtool.c | 4 ++++
- ixgbe_phy.c | 33 +++++++++++++++++++++++++++++----
- ixgbe_phy.h | 2 ++
- ixgbe_type.h | 2 ++
+ src/ixgbe_82599.c | 4 +++-
+ src/ixgbe_ethtool.c | 4 ++++
+ src/ixgbe_phy.c | 33 +++++++++++++++++++++++++++++----
+ src/ixgbe_phy.h | 2 ++
+ src/ixgbe_type.h | 2 ++
5 files changed, 40 insertions(+), 5 deletions(-)
-diff --git a/ixgbe_82599.c b/ixgbe_82599.c
-index 75e368f..b0a10de 100644
---- a/ixgbe_82599.c
-+++ b/ixgbe_82599.c
+diff --git a/src/ixgbe_82599.c b/src/ixgbe_82599.c
+index c95fc4f..a5c74df 100644
+--- a/src/ixgbe_82599.c
++++ b/src/ixgbe_82599.c
@@ -395,7 +395,9 @@ s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw,
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 ||
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 ||
@@ -116,10 +116,10 @@ index 75e368f..b0a10de 100644
*speed = IXGBE_LINK_SPEED_1GB_FULL;
*autoneg = true;
goto out;
-diff --git a/ixgbe_ethtool.c b/ixgbe_ethtool.c
-index 7ada455..fb16f3c 100644
---- a/ixgbe_ethtool.c
-+++ b/ixgbe_ethtool.c
+diff --git a/src/ixgbe_ethtool.c b/src/ixgbe_ethtool.c
+index e983035..7dc9343 100644
+--- a/src/ixgbe_ethtool.c
++++ b/src/ixgbe_ethtool.c
@@ -412,6 +412,8 @@ static int ixgbe_get_link_ksettings(struct net_device *netdev,
case ixgbe_sfp_type_1g_sx_core1:
case ixgbe_sfp_type_1g_lx_core0:
@@ -138,11 +138,11 @@ index 7ada455..fb16f3c 100644
ecmd->supported |= SUPPORTED_FIBRE;
ecmd->advertising |= ADVERTISED_FIBRE;
ecmd->port = PORT_FIBRE;
-diff --git a/ixgbe_phy.c b/ixgbe_phy.c
-index 647fdba..0f39fd8 100644
---- a/ixgbe_phy.c
-+++ b/ixgbe_phy.c
-@@ -1266,6 +1266,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
+diff --git a/src/ixgbe_phy.c b/src/ixgbe_phy.c
+index 3d99a88..3632234 100644
+--- a/src/ixgbe_phy.c
++++ b/src/ixgbe_phy.c
+@@ -1268,6 +1268,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
u8 comp_codes_1g = 0;
u8 comp_codes_10g = 0;
u8 oui_bytes[3] = {0, 0, 0};
@@ -150,7 +150,7 @@ index 647fdba..0f39fd8 100644
u8 cable_tech = 0;
u8 cable_spec = 0;
u16 enforce_sfp = 0;
-@@ -1309,6 +1310,12 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
+@@ -1311,6 +1312,12 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
IXGBE_SFF_CABLE_TECHNOLOGY,
&cable_tech);
@@ -163,7 +163,7 @@ index 647fdba..0f39fd8 100644
if (status != IXGBE_SUCCESS)
goto err_read_i2c_eeprom;
-@@ -1391,6 +1398,18 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
+@@ -1393,6 +1400,18 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
else
hw->phy.sfp_type =
ixgbe_sfp_type_1g_lx_core1;
@@ -182,7 +182,7 @@ index 647fdba..0f39fd8 100644
} else {
hw->phy.sfp_type = ixgbe_sfp_type_unknown;
}
-@@ -1481,7 +1500,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
+@@ -1483,7 +1502,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 ||
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 ||
hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 ||
@@ -193,7 +193,7 @@ index 647fdba..0f39fd8 100644
hw->phy.type = ixgbe_phy_sfp_unsupported;
status = IXGBE_ERR_SFP_NOT_SUPPORTED;
goto out;
-@@ -1500,7 +1521,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
+@@ -1502,7 +1523,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 ||
hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 ||
hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 ||
@@ -204,7 +204,7 @@ index 647fdba..0f39fd8 100644
/* Make sure we're a supported PHY type */
if (hw->phy.type == ixgbe_phy_sfp_intel) {
status = IXGBE_SUCCESS;
-@@ -1819,12 +1842,14 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
+@@ -1821,12 +1844,14 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
if (sfp_type == ixgbe_sfp_type_da_act_lmt_core0 ||
sfp_type == ixgbe_sfp_type_1g_lx_core0 ||
sfp_type == ixgbe_sfp_type_1g_cu_core0 ||
@@ -221,10 +221,10 @@ index 647fdba..0f39fd8 100644
sfp_type = ixgbe_sfp_type_srlr_core1;
/* Read offset to PHY init contents */
-diff --git a/ixgbe_phy.h b/ixgbe_phy.h
-index 3ece00f..60c7574 100644
---- a/ixgbe_phy.h
-+++ b/ixgbe_phy.h
+diff --git a/src/ixgbe_phy.h b/src/ixgbe_phy.h
+index b6ddb2e..29c4645 100644
+--- a/src/ixgbe_phy.h
++++ b/src/ixgbe_phy.h
@@ -18,6 +18,7 @@
#define IXGBE_SFF_1GBE_COMP_CODES 0x6
#define IXGBE_SFF_10GBE_COMP_CODES 0x3
@@ -241,11 +241,11 @@ index 3ece00f..60c7574 100644
#define IXGBE_SFF_10GBASESR_CAPABLE 0x10
#define IXGBE_SFF_10GBASELR_CAPABLE 0x20
#define IXGBE_SFF_SOFT_RS_SELECT_MASK 0x8
-diff --git a/ixgbe_type.h b/ixgbe_type.h
-index d85bd9b..fbe2e66 100644
---- a/ixgbe_type.h
-+++ b/ixgbe_type.h
-@@ -3705,6 +3705,8 @@ enum ixgbe_sfp_type {
+diff --git a/src/ixgbe_type.h b/src/ixgbe_type.h
+index 1700599..403687c 100644
+--- a/src/ixgbe_type.h
++++ b/src/ixgbe_type.h
+@@ -3722,6 +3722,8 @@ enum ixgbe_sfp_type {
ixgbe_sfp_type_1g_sx_core1 = 12,
ixgbe_sfp_type_1g_lx_core0 = 13,
ixgbe_sfp_type_1g_lx_core1 = 14,
@@ -255,5 +255,5 @@ index d85bd9b..fbe2e66 100644
ixgbe_sfp_type_unknown = 0xFFFF
};
--
-2.44.0
+2.39.5
diff --git a/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch b/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch
index 40a5a2f4..7bd0b04b 100644
--- a/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch
+++ b/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch
@@ -88,10 +88,10 @@ index cf592d7b630f..e8915701aa73 100644
};
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index 4822f68edbf0..ba4304144d37 100644
+index c33b1ecc591e..7576d51cd16d 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
-@@ -2608,6 +2608,7 @@ static struct devinet_sysctl_table {
+@@ -2609,6 +2609,7 @@ static struct devinet_sysctl_table {
"route_localnet"),
DEVINET_SYSCTL_FLUSHING_ENTRY(DROP_UNICAST_IN_L2_MULTICAST,
"drop_unicast_in_l2_multicast"),
@@ -126,7 +126,7 @@ index 8360939acf85..b13832a08d28 100644
.procname = "ioam6_id",
.data = &ipv6_devconf.ioam6_id,
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index fc5c53462025..9c9c9d51a12d 100644
+index 5715d54f3d0b..e88971b512ba 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -682,6 +682,14 @@ static inline void rt6_probe(struct fib6_nh *fib6_nh)