diff --git a/package/base-files/default/sbin/ifdown b/package/base-files/default/sbin/ifdown
index 50d59d1df8160d0bcb188313860926756ef0b649..4f5be8c8c01d1b324a8669e84f6f3e52581171e9 100755
--- a/package/base-files/default/sbin/ifdown
+++ b/package/base-files/default/sbin/ifdown
@@ -12,6 +12,9 @@ debug "### ifdown $cfg ###"
 config_get proto "$cfg" proto
 [ -z "$proto" ] && { echo "interface not found."; exit; }
 
+# call interface stop handler
+( type "stop_interface_$proto" ) >/dev/null 2>/dev/null && eval "stop_interface_$proto '$cfg'"
+
 # make sure all locks are removed
 for lock in "/var/lock/dhcp-$iface" "/var/lock/ppp-$iface"; do
 	[ -f "$lock" ] && {