From 76d4d39977fe2a7bde45aade62c343f7eab0d282 Mon Sep 17 00:00:00 2001 From: suyuan <175338101@qq.com> Date: Sun, 5 Nov 2023 20:06:00 +0800 Subject: [PATCH] fix --- netifd/Makefile | 8 ++--- netifd/files/etc/hotplug.d/iface/00-netstate | 0 .../etc/uci-defaults/14_migrate-dhcp-release | 0 netifd/files/etc/udhcpc.user | 0 netifd/files/lib/netifd/dhcp.script | 9 ++--- netifd/files/sbin/ifup | 33 +++++++++++++++++++ netifd/patches/001-init-pause.patch | 13 ++++++++ 7 files changed, 55 insertions(+), 8 deletions(-) mode change 100755 => 100644 netifd/Makefile mode change 100755 => 100644 netifd/files/etc/hotplug.d/iface/00-netstate mode change 100755 => 100644 netifd/files/etc/uci-defaults/14_migrate-dhcp-release mode change 100755 => 100644 netifd/files/etc/udhcpc.user create mode 100644 netifd/patches/001-init-pause.patch diff --git a/netifd/Makefile b/netifd/Makefile old mode 100755 new mode 100644 index 6e4942be6..808432756 --- a/netifd/Makefile +++ b/netifd/Makefile @@ -1,13 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=netifd -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git -PKG_SOURCE_DATE:=2023-10-20 -PKG_SOURCE_VERSION:=5590a80e2566d378be955f61c287a63fb3bdf329 -PKG_MIRROR_HASH:=eef792b4e9fa7a5227cf8c2ec4ed5e6558dd04c119cd9f97561923821fd1aa92 +PKG_SOURCE_DATE:=2023-08-31 +PKG_SOURCE_VERSION:=1a07f1dff32b3af49e39533e33e8964b59535662 +PKG_MIRROR_HASH:=dc621dd04c3c9631002f929cf10a4620f57af8b0baf614c590bda17957fa6201 PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-2.0 diff --git a/netifd/files/etc/hotplug.d/iface/00-netstate b/netifd/files/etc/hotplug.d/iface/00-netstate old mode 100755 new mode 100644 diff --git a/netifd/files/etc/uci-defaults/14_migrate-dhcp-release b/netifd/files/etc/uci-defaults/14_migrate-dhcp-release old mode 100755 new mode 100644 diff --git a/netifd/files/etc/udhcpc.user b/netifd/files/etc/udhcpc.user old mode 100755 new mode 100644 diff --git a/netifd/files/lib/netifd/dhcp.script b/netifd/files/lib/netifd/dhcp.script index db8deac9e..02a95dd76 100755 --- a/netifd/files/lib/netifd/dhcp.script +++ b/netifd/files/lib/netifd/dhcp.script @@ -13,20 +13,21 @@ set_classless_routes() { done } -setup_interface () { +setup_interface() { proto_init_update "*" 1 proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}" # TODO: apply $broadcast - local ip_net IP PREFIX NETWORK NETMASK BROADCAST - ipcalc "$ip/$mask" && ip_net="$NETWORK" + local ip_net + eval "$(ipcalc.sh "$ip/$mask")";ip_net="$NETWORK" local i for i in $router; do local gw_net - ipcalc "$i/$mask" && gw_net="$NETWORK" + eval "$(ipcalc.sh "$i/$mask")";gw_net="$NETWORK" [ "$ip_net" != "$gw_net" ] && proto_add_ipv4_route "$i" 32 "" "$ip" + #[ "$DEFAULTROUTE" = 0 ] || proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip" proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip" local r diff --git a/netifd/files/sbin/ifup b/netifd/files/sbin/ifup index fbf2fd80c..15be535bb 100755 --- a/netifd/files/sbin/ifup +++ b/netifd/files/sbin/ifup @@ -1,6 +1,7 @@ #!/bin/sh ifup_all= +setup_wifi= if_call() { local interface="$1" @@ -13,6 +14,7 @@ case "$0" in *ifdown) modes=down;; *ifup) modes="down up" + setup_wifi=1 ;; *) echo "Invalid command: $0";; esac @@ -23,6 +25,10 @@ while :; do ifup_all=1 shift ;; + -w) + setup_wifi= + shift + ;; *) break ;; @@ -34,6 +40,7 @@ if [ -n "$ifup_all" ]; then for interface in $(ubus -S list 'network.interface.*'); do if_call "${interface##network.interface.}" done + [ -n "$setup_wifi" ] && /sbin/wifi up exit else ubus -S list "network.interface.$1" > /dev/null || { @@ -42,3 +49,29 @@ else } if_call "$1" fi + +if [ -n "$setup_wifi" ] && grep -sq config /etc/config/wireless; then + . /lib/functions.sh + + find_related_radios() { + local wdev wnet + config_get wdev "$1" device + config_get wnet "$1" network + + if [ -n "$wdev" ]; then + for wnet in $wnet; do + if [ "$wnet" = "$network" ]; then + append radio_devs "$wdev" "$N" + fi + done + fi + } + + network="$1" + config_load wireless + config_foreach find_related_radios wifi-iface + + for dev in $(echo "$radio_devs" | sort -u); do + /sbin/wifi up "$dev" + done +fi diff --git a/netifd/patches/001-init-pause.patch b/netifd/patches/001-init-pause.patch new file mode 100644 index 000000000..0c09aab73 --- /dev/null +++ b/netifd/patches/001-init-pause.patch @@ -0,0 +1,13 @@ +--- a/system-linux.c 2023-09-13 10:44:22.163111635 +0200 ++++ b/system-linux.c 2023-09-13 10:44:47.562696256 +0200 +@@ -2720,7 +2720,9 @@ + system_if_dump_info(struct device *dev, struct blob_buf *b) + { + __u32 *supported, *advertising, *lp_advertising; +- bool rx_pause, tx_pause, pause_autoneg; ++ bool rx_pause = false; ++ bool tx_pause = false; ++ bool pause_autoneg = false; + struct { + struct ethtool_link_settings req; + __u32 link_mode_data[3 * 127];