--- a/interface.c
+++ b/interface.c
@@ -852,6 +852,11 @@ interface_alloc(const char *name, struct
 		force_link = true;
 
 	iface->autostart = blobmsg_get_bool_default(tb[IFACE_ATTR_AUTO], true);
+	if ((iface->proto_handler->flags & PROTO_FLAG_AUTOUP) && iface->autostart) {
+		DPRINTF("Auto start for this interface is turned off\n");
+		iface->autostart = false;
+	}
+
 	iface->renew = blobmsg_get_bool_default(tb[IFACE_ATTR_RENEW], true);
 	iface->force_link = blobmsg_get_bool_default(tb[IFACE_ATTR_FORCE_LINK], force_link);
 	iface->dynamic = dynamic;
--- a/proto-shell.c
+++ b/proto-shell.c
@@ -921,8 +921,14 @@ proto_shell_add_handler(const char *scri
 		handler->proto.flags |= PROTO_FLAG_NO_TASK;
 
 	tmp = json_get_field(obj, "available", json_type_boolean);
-	if (tmp && json_object_get_boolean(tmp))
+	if (tmp && json_object_get_boolean(tmp)) {
 		handler->proto.flags |= PROTO_FLAG_INIT_AVAILABLE;
+	}
+
+	tmp = json_get_field(obj, "disable_auto_up", json_type_boolean);
+	if (tmp && json_object_get_boolean(tmp)) {
+		handler->proto.flags |= PROTO_FLAG_AUTOUP;
+	}
 
 	tmp = json_get_field(obj, "renew-handler", json_type_boolean);
 	if (tmp && json_object_get_boolean(tmp))
--- a/proto.h
+++ b/proto.h
@@ -41,6 +41,7 @@ enum {
 	PROTO_FLAG_TEARDOWN_ON_L3_LINK_DOWN = (1 << 6),
 	PROTO_FLAG_NO_TASK = (1 << 7),
 	PROTO_FLAG_NODEV_CONFIG = (1 << 8),
+	PROTO_FLAG_AUTOUP = (1 << 9),
 };
 
 struct interface_proto_state {
--- a/scripts/netifd-proto.sh
+++ b/scripts/netifd-proto.sh
@@ -440,6 +440,7 @@ init_proto() {
 				no_device=0
 				no_device_config=0
 				no_proto_task=0
+				disable_auto_up=0
 				available=0
 				renew_handler=0
 				teardown_on_l3_link_down=0
@@ -455,6 +456,7 @@ init_proto() {
 				json_add_boolean no-device-config "$no_device_config"
 				json_add_boolean no-proto-task "$no_proto_task"
 				json_add_boolean available "$available"
+				json_add_boolean disable_auto_up "$disable_auto_up"
 				json_add_boolean renew-handler "$renew_handler"
 				json_add_boolean lasterror "$lasterror"
 				json_add_boolean teardown-on-l3-link-down "$teardown_on_l3_link_down"
