comgt-ncm: fix setting ip[46]table and MTU
authorAlexander Patrakov <patrakov@gmail.com>
Sat, 27 Sep 2025 19:59:41 +0000 (03:59 +0800)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 20 Dec 2025 14:07:22 +0000 (15:07 +0100)
The ncm proto handler ignored ip4table, ip6table, and mtu settings.

The fix is based on the existing code in the mbim proto handler.

Fixes: #20216.
Signed-off-by: Alexander Patrakov <patrakov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20217
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/network/utils/comgt/files/ncm.sh

index a986973838717083d7391d7727df68b112ca3a7d..9cb5b1e662f12a694e6c9bdca105029bb113f966 100644 (file)
@@ -22,6 +22,7 @@ proto_ncm_init_config() {
        proto_config_add_boolean sourcefilter
        proto_config_add_boolean delegate
        proto_config_add_int profile
+       proto_config_add_int mtu
        proto_config_add_defaults
 }
 
@@ -30,8 +31,8 @@ proto_ncm_setup() {
 
        local connect context_type devname devpath finalize ifpath initialize manufacturer setmode
 
-       local delegate sourcefilter $PROTO_DEFAULT_OPTIONS
-       json_get_vars delegate sourcefilter $PROTO_DEFAULT_OPTIONS
+       local delegate ip4table ip6table mtu sourcefilter $PROTO_DEFAULT_OPTIONS
+       json_get_vars delegate ip4table ip6table mtu sourcefilter $PROTO_DEFAULT_OPTIONS
 
        local apn auth delay device ifname mode password pdptype pincode profile username
        json_get_vars apn auth delay device ifname mode password pdptype pincode profile username
@@ -192,9 +193,9 @@ proto_ncm_setup() {
                json_add_string ifname "@$interface"
                json_add_string proto "dhcp"
                proto_add_dynamic_defaults
-               [ -n "$zone" ] && {
-                       json_add_string zone "$zone"
-               }
+               [ -n "$zone" ] && json_add_string zone "$zone"
+               [ -n "$ip4table" ] && json_add_string ip4table "$ip4table"
+
                json_close_object
                ubus call network add_dynamic "$(json_dump)"
        }
@@ -208,13 +209,18 @@ proto_ncm_setup() {
                [ "$delegate" = "0" ] && json_add_boolean delegate "0"
                [ "$sourcefilter" = "0" ] && json_add_boolean sourcefilter "0"
                proto_add_dynamic_defaults
-               [ -n "$zone" ] && {
-                       json_add_string zone "$zone"
-               }
+               [ -n "$zone" ] && json_add_string zone "$zone"
+               [ -n "$ip6table" ] && json_add_string ip6table "$ip6table"
+
                json_close_object
                ubus call network add_dynamic "$(json_dump)"
        }
 
+       [ -n "$mtu" -a "$mtu" != 0 ] && {
+               echo "Setting MTU of $ifname to $mtu"
+               /sbin/ip link set dev $ifname mtu $mtu
+       }
+
        [ -n "$finalize" ] && {
                eval COMMAND="$finalize" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
                        echo "Failed to configure modem"