From: Felix Fietkau Date: Sun, 27 Jul 2014 11:21:22 +0000 (+0200) Subject: interface: enable force_link by default for proto=static X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=commitdiff_plain;h=75e73ab3714e324bf98140dbbf740d3e4c40f044;hp=bb1077aaf9f68dba09224803dd89d7316dc24648 interface: enable force_link by default for proto=static Signed-off-by: Felix Fietkau --- diff --git a/interface.c b/interface.c index e66b58a..ed60959 100644 --- a/interface.c +++ b/interface.c @@ -652,6 +652,7 @@ interface_alloc(const char *name, struct blob_attr *config) struct blob_attr *cur; const char *proto_name = NULL; char *iface_name; + bool force_link = false; iface = calloc_a(sizeof(*iface), &iface_name, strlen(name) + 1); iface->name = strcpy(iface_name, name); @@ -673,9 +674,11 @@ interface_alloc(const char *name, struct blob_attr *config) proto_name = blobmsg_data(cur); proto_attach_interface(iface, proto_name); + if (iface->proto_handler->flags & PROTO_FLAG_FORCE_LINK_DEFAULT) + force_link = true; iface->autostart = blobmsg_get_bool_default(tb[IFACE_ATTR_AUTO], true); - iface->force_link = blobmsg_get_bool_default(tb[IFACE_ATTR_FORCE_LINK], false); + iface->force_link = blobmsg_get_bool_default(tb[IFACE_ATTR_FORCE_LINK], force_link); iface->proto_ip.no_defaultroute = !blobmsg_get_bool_default(tb[IFACE_ATTR_DEFAULTROUTE], true); iface->proto_ip.no_dns = diff --git a/proto-static.c b/proto-static.c index 51e2083..3e33c3d 100644 --- a/proto-static.c +++ b/proto-static.c @@ -100,7 +100,8 @@ error: static struct proto_handler static_proto = { .name = "static", - .flags = PROTO_FLAG_IMMEDIATE, + .flags = PROTO_FLAG_IMMEDIATE | + PROTO_FLAG_FORCE_LINK_DEFAULT, .config_params = &proto_ip_attr, .attach = static_attach, }; diff --git a/proto.h b/proto.h index e7d84ac..7210f48 100644 --- a/proto.h +++ b/proto.h @@ -36,6 +36,7 @@ enum { PROTO_FLAG_NODEV = (1 << 1), PROTO_FLAG_INIT_AVAILABLE = (1 << 2), PROTO_FLAG_RENEW_AVAILABLE = (1 << 3), + PROTO_FLAG_FORCE_LINK_DEFAULT = (1 << 4), }; struct interface_proto_state {