mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Remove netifd fork
This commit is contained in:
parent
0f0be7c8ca
commit
e8536cb839
16 changed files with 0 additions and 774 deletions
|
@ -1,53 +0,0 @@
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=netifd
|
|
||||||
PKG_RELEASE:=1
|
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
|
||||||
#PKG_SOURCE_DATE:=2023-11-20
|
|
||||||
#PKG_SOURCE_VERSION:=f3e06e81b347bbdec1c6c71603328b6e442728d4
|
|
||||||
#PKG_MIRROR_HASH:=f16dd61aede5597fd7b5ee8e7752a916494281bc981b35c16e788ddb7409584a
|
|
||||||
PKG_SOURCE_DATE:=2023-11-14
|
|
||||||
PKG_SOURCE_VERSION:=8587c074f1eb2064c42adb0a6aa5073f695ab89d
|
|
||||||
PKG_MIRROR_HASH:=f5ceb771badd7a23cceb53537299580d4b483e2b3ec5de09b9c3c54692893dd9
|
|
||||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
|
||||||
PKG_LICENSE_FILES:=
|
|
||||||
|
|
||||||
PKG_BUILD_FLAGS:=lto
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
include $(INCLUDE_DIR)/cmake.mk
|
|
||||||
|
|
||||||
define Package/netifd
|
|
||||||
SECTION:=base
|
|
||||||
CATEGORY:=Base system
|
|
||||||
# DEPENDS:=+libuci +libnl-tiny +libubus +ubus +ubusd +jshn +libubox +libudebug
|
|
||||||
DEPENDS:=+libuci +libnl-tiny +libubus +ubus +ubusd +jshn +libubox
|
|
||||||
TITLE:=OpenWrt Network Interface Configuration Daemon
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/netifd/conffiles
|
|
||||||
/etc/udhcpc.user
|
|
||||||
/etc/udhcpc.user.d/
|
|
||||||
endef
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
|
||||||
-I$(STAGING_DIR)/usr/include/libnl-tiny \
|
|
||||||
-I$(STAGING_DIR)/usr/include
|
|
||||||
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DLIBNL_LIBS=-lnl-tiny \
|
|
||||||
-DDEBUG=1
|
|
||||||
|
|
||||||
define Package/netifd/install
|
|
||||||
$(INSTALL_DIR) $(1)/sbin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/netifd $(1)/sbin/
|
|
||||||
$(CP) ./files/* $(1)/
|
|
||||||
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d/
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/scripts/* $(1)/lib/netifd/
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,netifd))
|
|
|
@ -1,6 +0,0 @@
|
||||||
[ ifup = "$ACTION" ] && {
|
|
||||||
uci_toggle_state network "$INTERFACE" up 1
|
|
||||||
[ -n "$DEVICE" ] && {
|
|
||||||
uci_toggle_state network "$INTERFACE" ifname "$DEVICE"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,144 +0,0 @@
|
||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=20
|
|
||||||
STOP=90
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
init_switch() {
|
|
||||||
setup_switch() { return 0; }
|
|
||||||
|
|
||||||
include /lib/network
|
|
||||||
setup_switch
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
init_switch
|
|
||||||
|
|
||||||
procd_open_instance
|
|
||||||
procd_set_param command /sbin/netifd
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_set_param watch network.interface
|
|
||||||
[ -e /proc/sys/kernel/core_pattern ] && {
|
|
||||||
procd_set_param limits core="unlimited"
|
|
||||||
}
|
|
||||||
procd_close_instance
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
local rv=0
|
|
||||||
|
|
||||||
init_switch
|
|
||||||
ubus call network reload || rv=1
|
|
||||||
/sbin/wifi reload_legacy
|
|
||||||
return $rv
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_service() {
|
|
||||||
/sbin/wifi down
|
|
||||||
ifdown -a
|
|
||||||
sleep 1
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_atm_bridge_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network "atm-bridge" "${1}" \
|
|
||||||
'unit:uinteger:0' \
|
|
||||||
'vci:range(32, 65535):35' \
|
|
||||||
'vpi:range(0, 255):8' \
|
|
||||||
'atmdev:uinteger:0' \
|
|
||||||
'encaps:or("llc", "vc"):llc' \
|
|
||||||
'payload:or("bridged", "routed"):bridged'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_route_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network route "${1}" \
|
|
||||||
'interface:string' \
|
|
||||||
'target:cidr4' \
|
|
||||||
'netmask:netmask4' \
|
|
||||||
'gateway:ip4addr' \
|
|
||||||
'metric:uinteger' \
|
|
||||||
'mtu:uinteger' \
|
|
||||||
'table:or(range(0,65535),string)'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_route6_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network route6 "${1}" \
|
|
||||||
'interface:string' \
|
|
||||||
'target:cidr6' \
|
|
||||||
'gateway:ip6addr' \
|
|
||||||
'metric:uinteger' \
|
|
||||||
'mtu:uinteger' \
|
|
||||||
'table:or(range(0,65535),string)'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_rule_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network rule "${1}" \
|
|
||||||
'in:string' \
|
|
||||||
'out:string' \
|
|
||||||
'src:cidr4' \
|
|
||||||
'dest:cidr4' \
|
|
||||||
'tos:range(0,31)' \
|
|
||||||
'mark:string' \
|
|
||||||
'invert:bool' \
|
|
||||||
'lookup:or(range(0,65535),string)' \
|
|
||||||
'goto:range(0,65535)' \
|
|
||||||
'action:or("prohibit", "unreachable", "blackhole", "throw")'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_rule6_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network rule6 "${1}" \
|
|
||||||
'in:string' \
|
|
||||||
'out:string' \
|
|
||||||
'src:cidr6' \
|
|
||||||
'dest:cidr6' \
|
|
||||||
'tos:range(0,31)' \
|
|
||||||
'mark:string' \
|
|
||||||
'invert:bool' \
|
|
||||||
'lookup:or(range(0,65535),string)' \
|
|
||||||
'goto:range(0,65535)' \
|
|
||||||
'action:or("prohibit", "unreachable", "blackhole", "throw")'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_switch_section()
|
|
||||||
{
|
|
||||||
uci_validate_section network switch "${1}" \
|
|
||||||
'name:string' \
|
|
||||||
'enable:bool' \
|
|
||||||
'enable_vlan:bool' \
|
|
||||||
'reset:bool' \
|
|
||||||
'ar8xxx_mib_poll_interval:uinteger' \
|
|
||||||
'ar8xxx_mib_type:range(0,1)'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_switch_vlan()
|
|
||||||
{
|
|
||||||
uci_validate_section network switch_vlan "${1}" \
|
|
||||||
'device:string' \
|
|
||||||
'vlan:uinteger' \
|
|
||||||
'ports:list(ports)'
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers()
|
|
||||||
{
|
|
||||||
procd_add_reload_trigger network wireless
|
|
||||||
|
|
||||||
procd_open_validate
|
|
||||||
validate_atm_bridge_section
|
|
||||||
validate_route_section
|
|
||||||
[ -e /proc/sys/net/ipv6 ] && validate_route6_section
|
|
||||||
validate_rule_section
|
|
||||||
[ -e /proc/sys/net/ipv6 ] && validate_rule6_section
|
|
||||||
validate_switch_section
|
|
||||||
validate_switch_vlan
|
|
||||||
procd_close_validate
|
|
||||||
}
|
|
||||||
|
|
||||||
shutdown() {
|
|
||||||
ifdown -a
|
|
||||||
sleep 1
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=25
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
reload_service
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers() {
|
|
||||||
procd_add_reload_trigger "network"
|
|
||||||
procd_add_reload_trigger "firewall"
|
|
||||||
procd_add_raw_trigger "interface.*" 1000 /etc/init.d/packet_steering reload
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
/usr/libexec/network/packet-steering.sh
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
migrate_release() {
|
|
||||||
local config="$1"
|
|
||||||
local proto
|
|
||||||
local release
|
|
||||||
|
|
||||||
config_get proto "$config" proto
|
|
||||||
config_get release "$config" release
|
|
||||||
|
|
||||||
[ "$proto" = "dhcp" ] && [ -n "$release" ] && {
|
|
||||||
norelease="$((!$release))"
|
|
||||||
uci_set network "$config" norelease "$norelease"
|
|
||||||
uci_remove network "$config" release
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load network
|
|
||||||
config_foreach migrate_release interface
|
|
||||||
uci commit network
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1 +0,0 @@
|
||||||
# This script is sourced by udhcpc's dhcp.script at every DHCP event.
|
|
|
@ -1,122 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
[ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. /lib/netifd/netifd-proto.sh
|
|
||||||
|
|
||||||
set_classless_routes() {
|
|
||||||
local max=128
|
|
||||||
while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do
|
|
||||||
proto_add_ipv4_route "${1%%/*}" "${1##*/}" "$2" "$ip"
|
|
||||||
max=$(($max-1))
|
|
||||||
shift 2
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_interface() {
|
|
||||||
proto_init_update "*" 1
|
|
||||||
proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}"
|
|
||||||
# TODO: apply $broadcast
|
|
||||||
|
|
||||||
local ip_net
|
|
||||||
local ip_net IP PREFIX NETWORK NETMASK BROADCAST
|
|
||||||
ipcalc "$ip/$mask" && ip_net="$NETWORK"
|
|
||||||
|
|
||||||
local i
|
|
||||||
for i in $router; do
|
|
||||||
local gw_net
|
|
||||||
ipcalc "$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
|
|
||||||
for r in $CUSTOMROUTES; do
|
|
||||||
proto_add_ipv4_route "${r%%/*}" "${r##*/}" "$i" "$ip"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# CIDR STATIC ROUTES (rfc3442)
|
|
||||||
[ -n "$staticroutes" ] && set_classless_routes $staticroutes
|
|
||||||
[ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes
|
|
||||||
|
|
||||||
for i in $dns; do
|
|
||||||
proto_add_dns_server "$i"
|
|
||||||
done
|
|
||||||
for i in $domain; do
|
|
||||||
proto_add_dns_search "$i"
|
|
||||||
done
|
|
||||||
|
|
||||||
# TODO: Deprecate timesvr in favor of timesrv
|
|
||||||
if [ -n "$timesvr" -a -z "$timesrv" ]; then
|
|
||||||
timesrv="$timesvr"
|
|
||||||
echo "Environment variable 'timesvr' will be deprecated; use 'timesrv' instead."
|
|
||||||
fi
|
|
||||||
|
|
||||||
proto_add_data
|
|
||||||
[ -n "$ZONE" ] && json_add_string zone "$ZONE"
|
|
||||||
[ -n "$ntpsrv" ] && json_add_string ntpserver "$ntpsrv"
|
|
||||||
[ -n "$timesrv" ] && json_add_string timeserver "$timesrv"
|
|
||||||
[ -n "$hostname" ] && json_add_string hostname "$hostname"
|
|
||||||
[ -n "$message" ] && json_add_string message "$message"
|
|
||||||
[ -n "$timezone" ] && json_add_int timezone "$timezone"
|
|
||||||
[ -n "$lease" ] && json_add_int leasetime "$lease"
|
|
||||||
[ -n "$serverid" ] && json_add_string dhcpserver "$serverid"
|
|
||||||
proto_close_data
|
|
||||||
|
|
||||||
proto_send_update "$INTERFACE"
|
|
||||||
|
|
||||||
|
|
||||||
if [ "$IFACE6RD" != 0 -a -n "$ip6rd" ]; then
|
|
||||||
local v4mask="${ip6rd%% *}"
|
|
||||||
ip6rd="${ip6rd#* }"
|
|
||||||
local ip6rdprefixlen="${ip6rd%% *}"
|
|
||||||
ip6rd="${ip6rd#* }"
|
|
||||||
local ip6rdprefix="${ip6rd%% *}"
|
|
||||||
ip6rd="${ip6rd#* }"
|
|
||||||
local ip6rdbr="${ip6rd%% *}"
|
|
||||||
|
|
||||||
[ -n "$ZONE" ] || ZONE=$(fw3 -q network $INTERFACE 2>/dev/null)
|
|
||||||
[ -z "$IFACE6RD" -o "$IFACE6RD" = 1 ] && IFACE6RD=${INTERFACE}_6
|
|
||||||
|
|
||||||
json_init
|
|
||||||
json_add_string name "$IFACE6RD"
|
|
||||||
json_add_string ifname "@$INTERFACE"
|
|
||||||
json_add_string proto "6rd"
|
|
||||||
json_add_string peeraddr "$ip6rdbr"
|
|
||||||
json_add_int ip4prefixlen "$v4mask"
|
|
||||||
json_add_string ip6prefix "$ip6rdprefix"
|
|
||||||
json_add_int ip6prefixlen "$ip6rdprefixlen"
|
|
||||||
json_add_string tunlink "$INTERFACE"
|
|
||||||
[ -n "$IFACE6RD_DELEGATE" ] && json_add_boolean delegate "$IFACE6RD_DELEGATE"
|
|
||||||
[ -n "$ZONE6RD" ] || ZONE6RD=$ZONE
|
|
||||||
[ -n "$ZONE6RD" ] && json_add_string zone "$ZONE6RD"
|
|
||||||
[ -n "$MTU6RD" ] && json_add_string mtu "$MTU6RD"
|
|
||||||
json_close_object
|
|
||||||
|
|
||||||
ubus call network add_dynamic "$(json_dump)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
deconfig_interface() {
|
|
||||||
proto_init_update "*" 0
|
|
||||||
proto_send_update "$INTERFACE"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
deconfig)
|
|
||||||
deconfig_interface
|
|
||||||
;;
|
|
||||||
renew|bound)
|
|
||||||
setup_interface
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# user rules
|
|
||||||
[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user "$@"
|
|
||||||
for f in /etc/udhcpc.user.d/*; do
|
|
||||||
[ -f "$f" ] && (. "$f" "$@")
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,89 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ -x /sbin/udhcpc ] || exit 0
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. ../netifd-proto.sh
|
|
||||||
init_proto "$@"
|
|
||||||
|
|
||||||
proto_dhcp_init_config() {
|
|
||||||
renew_handler=1
|
|
||||||
|
|
||||||
proto_config_add_string 'ipaddr:ipaddr'
|
|
||||||
proto_config_add_string 'hostname:hostname'
|
|
||||||
proto_config_add_string clientid
|
|
||||||
proto_config_add_string vendorid
|
|
||||||
proto_config_add_boolean 'broadcast:bool'
|
|
||||||
proto_config_add_boolean 'norelease:bool'
|
|
||||||
proto_config_add_string 'reqopts:list(string)'
|
|
||||||
proto_config_add_boolean 'defaultreqopts:bool'
|
|
||||||
proto_config_add_string iface6rd
|
|
||||||
proto_config_add_array 'sendopts:list(string)'
|
|
||||||
proto_config_add_boolean delegate
|
|
||||||
proto_config_add_string zone6rd
|
|
||||||
proto_config_add_string zone
|
|
||||||
proto_config_add_string mtu6rd
|
|
||||||
proto_config_add_string customroutes
|
|
||||||
proto_config_add_boolean classlessroute
|
|
||||||
}
|
|
||||||
|
|
||||||
proto_dhcp_add_sendopts() {
|
|
||||||
[ -n "$1" ] && append "$3" "-x $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
proto_dhcp_setup() {
|
|
||||||
local config="$1"
|
|
||||||
local iface="$2"
|
|
||||||
|
|
||||||
local ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute defaultroute
|
|
||||||
json_get_vars ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd delegate zone6rd zone mtu6rd customroutes classlessroute defaultroute
|
|
||||||
|
|
||||||
local opt dhcpopts
|
|
||||||
for opt in $reqopts; do
|
|
||||||
append dhcpopts "-O $opt"
|
|
||||||
done
|
|
||||||
|
|
||||||
json_for_each_item proto_dhcp_add_sendopts sendopts dhcpopts
|
|
||||||
|
|
||||||
[ -z "$hostname" ] && hostname="$(cat /proc/sys/kernel/hostname)"
|
|
||||||
[ "$hostname" = "*" ] && hostname=
|
|
||||||
|
|
||||||
[ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts=
|
|
||||||
[ "$broadcast" = 1 ] && broadcast="-B" || broadcast=
|
|
||||||
[ "$norelease" = 1 ] && norelease="" || norelease="-R"
|
|
||||||
[ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C"
|
|
||||||
[ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd"
|
|
||||||
[ "$iface6rd" != 0 -a -f /lib/netifd/proto/6rd.sh ] && append dhcpopts "-O 212"
|
|
||||||
[ -n "$zone6rd" ] && proto_export "ZONE6RD=$zone6rd"
|
|
||||||
[ -n "$zone" ] && proto_export "ZONE=$zone"
|
|
||||||
[ -n "$mtu6rd" ] && proto_export "MTU6RD=$mtu6rd"
|
|
||||||
[ -n "$customroutes" ] && proto_export "CUSTOMROUTES=$customroutes"
|
|
||||||
[ -n "$defaultroute" ] && proto_export "DEFAULTROUTE=$defaultroute"
|
|
||||||
[ "$delegate" = "0" ] && proto_export "IFACE6RD_DELEGATE=0"
|
|
||||||
# Request classless route option (see RFC 3442) by default
|
|
||||||
[ "$classlessroute" = "0" ] || append dhcpopts "-O 121"
|
|
||||||
|
|
||||||
proto_export "INTERFACE=$config"
|
|
||||||
proto_run_command "$config" udhcpc \
|
|
||||||
-p /var/run/udhcpc-$iface.pid \
|
|
||||||
-s /lib/netifd/dhcp.script \
|
|
||||||
-f -t 0 -i "$iface" \
|
|
||||||
${ipaddr:+-r ${ipaddr/\/*/}} \
|
|
||||||
${hostname:+-x "hostname:$hostname"} \
|
|
||||||
${vendorid:+-V "$vendorid"} \
|
|
||||||
$clientid $defaultreqopts $broadcast $norelease $dhcpopts
|
|
||||||
}
|
|
||||||
|
|
||||||
proto_dhcp_renew() {
|
|
||||||
local interface="$1"
|
|
||||||
# SIGUSR1 forces udhcpc to renew its lease
|
|
||||||
local sigusr1="$(kill -l SIGUSR1)"
|
|
||||||
[ -n "$sigusr1" ] && proto_kill_command "$interface" $sigusr1
|
|
||||||
}
|
|
||||||
|
|
||||||
proto_dhcp_teardown() {
|
|
||||||
local interface="$1"
|
|
||||||
proto_kill_command "$interface"
|
|
||||||
}
|
|
||||||
|
|
||||||
add_protocol dhcp
|
|
|
@ -1,76 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2011 OpenWrt.org
|
|
||||||
|
|
||||||
. /usr/share/libubox/jshn.sh
|
|
||||||
|
|
||||||
find_config() {
|
|
||||||
local device="$1"
|
|
||||||
local ifdev ifl3dev ifobj
|
|
||||||
for ifobj in $(ubus list network.interface.\*); do
|
|
||||||
interface="${ifobj##network.interface.}"
|
|
||||||
(
|
|
||||||
json_load "$(ifstatus $interface)"
|
|
||||||
json_get_var ifdev device
|
|
||||||
json_get_var ifl3dev l3_device
|
|
||||||
if [ "$device" = "$ifdev" ] || [ "$device" = "$ifl3dev" ]; then
|
|
||||||
echo "$interface"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
) && return
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
unbridge() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ubus_call() {
|
|
||||||
json_init
|
|
||||||
local _data="$(ubus -S call "$1" "$2")"
|
|
||||||
[ -z "$_data" ] && return 1
|
|
||||||
json_load "$_data"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fixup_interface() {
|
|
||||||
local config="$1"
|
|
||||||
local ifname type device l3dev
|
|
||||||
|
|
||||||
config_get type "$config" type
|
|
||||||
config_get ifname "$config" ifname
|
|
||||||
[ "bridge" = "$type" ] && ifname="br-$config"
|
|
||||||
ubus_call "network.interface.$config" status || return 0
|
|
||||||
json_get_var l3dev l3_device
|
|
||||||
[ -n "$l3dev" ] && ifname="$l3dev"
|
|
||||||
json_init
|
|
||||||
config_set "$config" ifname "$ifname"
|
|
||||||
}
|
|
||||||
|
|
||||||
scan_interfaces() {
|
|
||||||
config_load network
|
|
||||||
config_foreach fixup_interface interface
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare_interface_bridge() {
|
|
||||||
local config="$1"
|
|
||||||
|
|
||||||
[ -n "$config" ] || return 0
|
|
||||||
ubus call network.interface."$config" prepare
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_interface() {
|
|
||||||
local iface="$1"
|
|
||||||
local config="$2"
|
|
||||||
|
|
||||||
[ -n "$config" ] || return 0
|
|
||||||
ubus call network.interface."$config" add_device "{ \"name\": \"$iface\" }"
|
|
||||||
}
|
|
||||||
|
|
||||||
do_sysctl() {
|
|
||||||
[ -n "$2" ] && \
|
|
||||||
sysctl -n -e -w "$1=$2" >/dev/null || \
|
|
||||||
sysctl -n -e "$1"
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
. /usr/share/libubox/jshn.sh
|
|
||||||
DEVICE="$1"
|
|
||||||
|
|
||||||
[ -n "$DEVICE" ] || {
|
|
||||||
echo "Usage: $0 <device>"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
json_init
|
|
||||||
json_add_string name "$DEVICE"
|
|
||||||
ubus call network.device status "$(json_dump)"
|
|
|
@ -1 +0,0 @@
|
||||||
ifup
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
INTERFACE="$1"
|
|
||||||
|
|
||||||
[ -n "$INTERFACE" ] || {
|
|
||||||
echo "Usage: $0 <interface>"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
ubus -S list "network.interface.$INTERFACE" >/dev/null || {
|
|
||||||
echo "Interface $INTERFACE not found"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
ubus call network.interface status "{ \"interface\" : \"$INTERFACE\" }"
|
|
|
@ -1,77 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
ifup_all=
|
|
||||||
setup_wifi=
|
|
||||||
|
|
||||||
if_call() {
|
|
||||||
local interface="$1"
|
|
||||||
for mode in $modes; do
|
|
||||||
ubus call network.interface $mode "{ \"interface\" : \"$interface\" }"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$0" in
|
|
||||||
*ifdown) modes=down;;
|
|
||||||
*ifup)
|
|
||||||
modes="down up"
|
|
||||||
setup_wifi=1
|
|
||||||
;;
|
|
||||||
*) echo "Invalid command: $0";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
while :; do
|
|
||||||
case "$1" in
|
|
||||||
-a)
|
|
||||||
ifup_all=1
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-w)
|
|
||||||
setup_wifi=
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
[ "$modes" = "down up" ] && ubus call network reload
|
|
||||||
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 || {
|
|
||||||
echo "Interface $1 not found"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
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
|
|
|
@ -1,70 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)"
|
|
||||||
[ "$NPROCS" -gt 1 ] || exit
|
|
||||||
|
|
||||||
PROC_MASK="$(( (1 << $NPROCS) - 1 ))"
|
|
||||||
|
|
||||||
find_irq_cpu() {
|
|
||||||
local dev="$1"
|
|
||||||
local match="$(grep -m 1 "$dev\$" /proc/interrupts)"
|
|
||||||
local cpu=0
|
|
||||||
|
|
||||||
[ -n "$match" ] && {
|
|
||||||
set -- $match
|
|
||||||
shift
|
|
||||||
for cur in $(seq 1 $NPROCS); do
|
|
||||||
[ "$1" -gt 0 ] && {
|
|
||||||
cpu=$(($cur - 1))
|
|
||||||
break
|
|
||||||
}
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "$cpu"
|
|
||||||
}
|
|
||||||
|
|
||||||
set_hex_val() {
|
|
||||||
local file="$1"
|
|
||||||
local val="$2"
|
|
||||||
val="$(printf %x "$val")"
|
|
||||||
[ -n "$DEBUG" ] && echo "$file = $val"
|
|
||||||
echo "$val" > "$file"
|
|
||||||
}
|
|
||||||
|
|
||||||
packet_steering="$(uci get "network.@globals[0].packet_steering")"
|
|
||||||
[ "$packet_steering" != 1 ] && exit 0
|
|
||||||
|
|
||||||
exec 512>/var/lock/smp_tune.lock
|
|
||||||
flock 512 || exit 1
|
|
||||||
|
|
||||||
[ -e "/usr/libexec/platform/packet-steering.sh" ] && {
|
|
||||||
/usr/libexec/platform/packet-steering.sh
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
for dev in /sys/class/net/*; do
|
|
||||||
[ -d "$dev" ] || continue
|
|
||||||
|
|
||||||
# ignore virtual interfaces
|
|
||||||
[ -n "$(ls "${dev}/" | grep '^lower_')" ] && continue
|
|
||||||
[ -d "${dev}/device" ] || continue
|
|
||||||
|
|
||||||
device="$(readlink "${dev}/device")"
|
|
||||||
device="$(basename "$device")"
|
|
||||||
irq_cpu="$(find_irq_cpu "$device")"
|
|
||||||
irq_cpu_mask="$((1 << $irq_cpu))"
|
|
||||||
|
|
||||||
for q in ${dev}/queues/tx-*; do
|
|
||||||
set_hex_val "$q/xps_cpus" "$PROC_MASK"
|
|
||||||
done
|
|
||||||
|
|
||||||
# ignore dsa slave ports for RPS
|
|
||||||
subsys="$(readlink "${dev}/device/subsystem")"
|
|
||||||
subsys="$(basename "$subsys")"
|
|
||||||
[ "$subsys" = "mdio_bus" ] && continue
|
|
||||||
|
|
||||||
for q in ${dev}/queues/rx-*; do
|
|
||||||
set_hex_val "$q/rps_cpus" "$PROC_MASK"
|
|
||||||
done
|
|
||||||
done
|
|
|
@ -1,57 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
[ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
|
|
||||||
|
|
||||||
set_classless_routes() {
|
|
||||||
local max=128
|
|
||||||
local type
|
|
||||||
while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do
|
|
||||||
[ ${1##*/} -eq 32 ] && type=host || type=net
|
|
||||||
echo "udhcpc: adding route for $type $1 via $2"
|
|
||||||
route add -$type "$1" gw "$2" dev "$interface"
|
|
||||||
max=$(($max-1))
|
|
||||||
shift 2
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_interface() {
|
|
||||||
echo "udhcpc: ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface"
|
|
||||||
ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface
|
|
||||||
|
|
||||||
[ -n "$router" ] && [ "$router" != "0.0.0.0" ] && [ "$router" != "255.255.255.255" ] && {
|
|
||||||
echo "udhcpc: setting default routers: $router"
|
|
||||||
|
|
||||||
local valid_gw=""
|
|
||||||
for i in $router ; do
|
|
||||||
route add default gw $i dev $interface
|
|
||||||
valid_gw="${valid_gw:+$valid_gw|}$i"
|
|
||||||
done
|
|
||||||
|
|
||||||
eval $(route -n | awk '
|
|
||||||
/^0.0.0.0\W{9}('$valid_gw')\W/ {next}
|
|
||||||
/^0.0.0.0/ {print "route del -net "$1" gw "$2";"}
|
|
||||||
')
|
|
||||||
}
|
|
||||||
|
|
||||||
# CIDR STATIC ROUTES (rfc3442)
|
|
||||||
[ -n "$staticroutes" ] && set_classless_routes $staticroutes
|
|
||||||
[ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
applied=
|
|
||||||
case "$1" in
|
|
||||||
deconfig)
|
|
||||||
ip -4 addr flush dev "$interface"
|
|
||||||
;;
|
|
||||||
renew)
|
|
||||||
setup_interface update
|
|
||||||
;;
|
|
||||||
bound)
|
|
||||||
setup_interface ifup
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# user rules
|
|
||||||
[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,12 +0,0 @@
|
||||||
--- a/system-linux.c 2023-11-24 16:49:37.715537192 +0100
|
|
||||||
+++ b/system-linux.c 2023-11-24 16:50:23.002742488 +0100
|
|
||||||
@@ -53,6 +53,9 @@
|
|
||||||
#ifndef RTN_FAILED_POLICY
|
|
||||||
#define RTN_FAILED_POLICY 12
|
|
||||||
#endif
|
|
||||||
+#ifndef RTN_POLICY_FAILED
|
|
||||||
+#define RTN_POLICY_FAILED 12
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#ifndef IFA_F_NOPREFIXROUTE
|
|
||||||
#define IFA_F_NOPREFIXROUTE 0x200
|
|
Loading…
Add table
Add a link
Reference in a new issue